假设我对正则表达式有以下要求;
cached
和is
之间匹配任何内容(cached 1a23a is
⇒1a23a
)forwarded
和to
之间匹配任何内容(forwarded 2ab34 to
⇒2ab34
)replied
和by
之间匹配任何内容(replied klaskd by
⇒klaskd
) 请注意,配对很重要,例如在cached
和to
之间捕获字符串不行。
目前,我正在使用以下正则表达式;
(?:cached (.*?) is|forwarded (.*?) to|replied (.*?) by)
但这会产生三个捕获组。是否可以编写一个在单个组中捕获的正则表达式?
答案 0 :(得分:1)
使用以下正则表达式,您可以在单个捕获组中匹配您需要的内容;
(?:cached(?= .* is)|forwarded(?= .* to)|replied(?= .* by)) (.*) (?:is|to|by)
只是为开始边界词添加正向前瞻就可以了。
要查看它的实际效果,here