我有更多标签。我想在没有一些单词的情况下选择他们的内容,并用其他东西替换。例如:
<title>WORD_1 WORD_2 | Blahhhhhh<title>
<title>WORD_3 WORD_4<title>
<title>WORD_5 WORD_6<title>
<title>WORD_7 WORD_8 | Dammmmmm <title>
欲望选择替换:
WORD_1 WORD_2
WORD_3 WORD_4
WORD_5 WORD_6
WORD_7 WORD_8
或者,换句话说,我想选择所有标签内容,直到第二部分(直到|
)
答案 0 :(得分:1)
您可以使用以下正则表达式 ...
来完成此操作(?<=<title>).*?(?=\||<title>)
(?<=<title>)
关注<title>
.*?
匹配任何字符(?=\||<title>)
期待|
或<title>
参见 regex demo
编辑1:
仅保留|
之前的字词并删除所有标记...
搜索: .*?(?<=<title>)(.*?)(?=\||<title>).*
替换为: $1
编辑2:
仅保留|
之后的字词并删除所有标记...
搜索: .*?(?<=\|)(.*?)(?:\||<title>)
替换为: $1
答案 1 :(得分:0)
虽然之前的答案很好,但我会建议 更快 (优化)正则表达式模式:
(<title>).+?(?=\||<title>)
<强> https://regex101.com/r/8gCnCy/1 强>
效果比较:
使用 PHP(PCRE)风味:
(<title>).+?(?=\||<title>)
- 4场比赛,260步(~229ms)
(?<=<title>).*?(?=\||<title>)
- 4场比赛,433步(~288ms)
使用 Python 风格:
(<title>).+?(?=\||<title>)
- 4场比赛,370步(~270ms)
(?<=<title>).*?(?=\||<title>)
- 4场比赛,973步(~529ms)