正则表达式:选择没有单词的标签内容,直到|

时间:2017-03-18 12:31:33

标签: regex

我有更多标签。我想在没有一些单词的情况下选择他们的内容,并用其他东西替换。例如:

<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

或者,换句话说,我想选择所有标签内容,直到第二部分(直到|

2 个答案:

答案 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)