java通过正则表达式替换字符串中部分内容
_
最近开发遇到个需求,需要使⽤正则来替换字符串中间的⼀部分内容,也是⾯向百度探索了⼀番,之前还没怎么在实际中⽤过正则,这⾥记录⼀下。
话不多说,直接上代码(解释在后⾯):
public static void main(String[] args){
String te ="{replacecontent}";//字符串替换的内容
String reg ="p=(.*?)&tr";//替换内容所对应的正则
String content="0.0.0.0:8080/abc-test-reg/test/index?p=0123456&trigger=2¶m=0d243b2-cd56-11e-abu9-05692e327ff";//要替换的字符串 StringBuilder operatorStr=new StringBuilder(content);
Pattern p = Patternpile(reg);
Matcher m = p.matcher(operatorStr);
if(m.find()){
//使⽤分组进⾏替换
}
System.out.String());
}
打印的内容:
其实就做了这么⼀件事情:
将上图内容中框起来的部分替换成下图:Array
主要原理就是,通过正则表达式在字符串中匹配到了那⼀部分内容p=+任意字符+&tr,然后那⼀部分内
容中我想要的进⾏分组也就是p=和&tr中间的那⼀部分,之后将分组的起始位置坐标,和终⽌位置坐标拿出来,对字符串的这部分进⾏替换。
拓展:
Pattern介绍
正则表达式的编译表⽰。
必须⾸先将正则表达式(指定为字符串)编译为此类的实例。 然后将所得的图案可以被⽤来创建⼀个Matcher对象可以匹配任意character sequences针对正则表达式。
执⾏匹配的所有状态都驻留在匹配器中,所以许多匹配者可以共享相同的模式。
所有⽅法:
Predicate<String> asPredicate() 创建可⽤于匹配字符串的谓词。
static Pattern compile(String regex) 将给定的正则表达式编译为模式。
static Pattern compile(String regex, int flags) 将给定的正则表达式编译为带有给定标志的模式。
int flags() 返回此模式的匹配标志。
Matcher matcher(CharSequence input) 创建⼀个匹配器,匹配给定的输⼊与此模式。
static boolean matches(String regex, CharSequence input) 编译给定的正则表达式,并尝试匹配给定的输⼊。
String pattern() 返回编译此模式的正则表达式。
static String quote(String s) 返回指定的 String的⽂字模式 String 。
String[] split(CharSequence input) 将给定的输⼊序列分成这个模式的匹配。
String[] split(CharSequence input, int limit) 将给定的输⼊序列分成这个模式的匹配。
Stream<String> splitAsStream(CharSequence input) 根据给定的输⼊序列创建⼀个流,该流与该模式匹配。
String toString() 返回此模式的字符串表⽰形式。
Matcher介绍
将内容与正则表达式进⾏匹配
所有⽅法:
Matcher appendReplacement(StringBuffer sb, String replacement) 实施⾮终端附加和替换步骤。
StringBuffer appendTail(StringBuffer sb) 实施终端附加和替换步骤。
int end() 返回最后⼀个字符匹配后的偏移量。
int end(int group) 返回在上次匹配操作期间由给定组捕获的⼦序列的最后⼀个字符之后的偏移量。
int end(String name) 返回给定捕获⼦序列的最后⼀个字符之后的偏移量 named-capturing group以前的匹配操作期间。 boolean find() 尝试到匹配模式的输⼊序列的下⼀个⼦序列。
boolean find(int start) 重新设置该匹配器,然后尝试从指定的索引开始到匹配模式的输⼊序列的下⼀个⼦序列。
String group() 返回与上⼀个匹配匹配的输⼊⼦序列。
String group(int group) 返回在上⼀次匹配操作期间由给定组捕获的输⼊⼦序列。
String group(String name) 返回给定捕获的输⼊⼦序列 named-capturing group以前的匹配操作期间。
int groupCount() 返回此匹配器模式中捕获组的数量。
boolean hasAnchoringBounds() 查询该匹配器的区域边界的锚定。
boolean hasTransparentBounds() 查询此匹配器的区域边界的透明度。
boolean hitEnd() 如果在匹配器执⾏的最后⼀次匹配操作中输⼊的结尾被搜索引擎命中,则返回true。
boolean lookingAt() 尝试将输⼊序列从区域开头开始与模式相匹配。
boolean matches() 尝试将整个区域与模式进⾏匹配。
Pattern pattern() 返回该匹配器解释的模式。
java replace方法static String quoteReplacement(String s) 返回⼀个⽂字替换 String为指定的 String 。
Matcher region(int start, int end) 设置该匹配器区域的限制。
int regionEnd() 报告该匹配器区域的最终索引(排他)。
int regionStart() 报告该匹配器区域的开始索引。
String replaceAll(String replacement) 将与模式匹配的输⼊序列的每个⼦序列替换为给定的替换字符串。
String replaceFirst(String replacement) 将与模式匹配的输⼊序列的第⼀个⼦序列替换为给定的替换字符串。
boolean requireEnd() 如果更多输⼊可以将正匹配更改为否定,则返回true。
Matcher reset() 重设此匹配器。
Matcher reset(CharSequence input) 使⽤新的输⼊序列重置此匹配器。
int start() 返回上⼀个匹配的起始索引。
int start(int group) 返回给定组在上⼀个匹配操作期间捕获的⼦序列的开始索引。
int start(String name) 返回给定捕获的⼦序列的初始索引 named-capturing group以前的匹配操作期间。
MatchResult toMatchResult() 返回此匹配器的匹配状态为MatchResult 。
String toString() 返回此匹配器的字符串表⽰形式。
Matcher useAnchoringBounds(boolean b) 设置该匹配器的区域边界的锚定。
Matcher usePattern(Pattern newPattern) 更改,这 Matcher⽤于查与匹配的 Pattern。
Matcher useTransparentBounds(boolean b) 设置此匹配器的区域边界的透明度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论