我想替换某些标签内的内容,例如:
<p>this it to be replaced</p>
Run Code Online (Sandbox Code Playgroud)
我可以在这样的组之间提取内容,但我能否真正替换该组?
str = str.replaceAll("<p>([^<]*)</p>", "replacement");
Run Code Online (Sandbox Code Playgroud)
dac*_*cwe 10
您可以使用环视(正向前瞻和后瞻):
将正则表达式更改为:"(?<=<p>)(.*?)(?=</p>)"你会没事的.
String str = "<p>this it to be replaced</p>";
System.out.println(str.replaceAll("(?<=<p>)(.*?)(?=</p>)", "replacement"));
Run Code Online (Sandbox Code Playgroud)
输出:
<p>replacement</p>
Run Code Online (Sandbox Code Playgroud)
但是要注意,如果你正在解析HTML,你应该使用某种HTML解析器,通常正则表达式不够好......
将正则表达式更改为:
(?<=<p>).*?(?=</p>)
Run Code Online (Sandbox Code Playgroud)
即
str = str.replaceAll("(?<=<p>).*?(?=</p>)", "replacement");
Run Code Online (Sandbox Code Playgroud)
这使用"后视"和"向前看"来在匹配(非贪婪)正则表达式之前/之后断言但不捕获输入
万一有人想知道,这个答案与dacwe的不同:他使用了不必要的括号.这个答案更优雅:)
| 归档时间: |
|
| 查看次数: |
13325 次 |
| 最近记录: |