统一正则表达式

时间:2017-04-17 03:09:49

标签: regex

假设我对正则表达式有以下要求;

  • cachedis之间匹配任何内容(cached 1a23a is1a23a
  • forwardedto之间匹配任何内容(forwarded 2ab34 to2ab34
  • repliedby之间匹配任何内容(replied klaskd byklaskd

请注意,配对很重要,例如在cachedto之间捕获字符串不行。

目前,我正在使用以下正则表达式;

(?:cached (.*?) is|forwarded (.*?) to|replied (.*?) by)

但这会产生三个捕获组。是否可以编写一个在单个组中捕获的正则表达式?

1 个答案:

答案 0 :(得分:1)

使用以下正则表达式,您可以在单个捕获组中匹配您需要的内容;

(?:cached(?= .* is)|forwarded(?= .* to)|replied(?= .* by)) (.*) (?:is|to|by)

只是为开始边界词添加正向前瞻就可以了。

要查看它的实际效果,here