[英]Regex using result for replace String
我想选择<h3>
之间的所有文本<h3>
和/h3> <
/h3> <
。 选择之后,我想用结果替换String的值。 在以下示例中,结果应为“ 基本信息”
String test="<h3>Basic Information</h3> <div>";
test = test.replaceAll("<h3>(.*?)</h3>", "$1");
但是目前的结果是
基本信息&lt; div&gt;
使用正则表达式,您可以执行以下操作:
String test="<h3>Basic Information</h3> <div>";
String repl = test.replaceFirst(".*<h3>([^&]+).*/h3> <.*", "$1");
//=> Basic Information
虽然您可以完全避免使用正则表达式,也可以使用String
API提取相同的文本。
另外,您可以使用此正则表达式进行匹配:
<h3>([^&]+).*/h3> <
并使用Pattern
and Matches
API获取捕获的#1组。
尝试这个:
Pattern pattern = Pattern.compile("<h3>(.*)<\\/h3>");
Matcher matcher = pattern.matcher("<h3>Basic Information</h3> <div>");
matcher.find();
StringBuffer sb = new StringBuffer();
matcher.appendReplacement(sb,"$1");
String result = sb.toString();
你之所以不能这样做,只有replaceFirst那是因为appendTail
方法被调用在结束replaceFirst
方法。 匹配器会将您未指定的组替换为空 ,将您指定的组替换为它们的值 ,当然还有不匹配的位,这些位很好,因为没有为它们创建匹配项,所以它们根本不会被替换。
对于您的查询:
组0 :<h3>
第一组 :基本信息
组0 :</ h3>
不匹配 :<div>
这只是您可以使用匹配器的一般示例。 当然,如果您只想要特定的组...那么请使用:
matcher.group(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.