【发布时间】:2015-12-08 22:08:45
【问题描述】:
我有这段文字:
before label bla bla bla aaaa<TAG1>bbbb bla bla bla bla abcd<TAG2>efgh after
还有这个正则表达式:
label\W+(?:\w+\W+){1,60}?(?:.){0,}?(\<TAG1\>|\<TAG2\>)(?:.){0,}?\W+(?:\w+\W+){1,60}(?:.){0,}?(\<TAG2\>|\<TAG1\>)(?:.){0,}?
它完成了这项工作,它按预期工作,但似乎并没有真正优化。
这是一个测试:https://regex101.com/r/eS2kS6/1
基本上我必须找到一个标签,在 N 个单词之后我应该得到 <TAG1> 或 <TAG2>,在 N 个单词之后我应该得到 <TAG1> 或 <TAG2>。
注意:
必须将<TAG1> 或<TAG2> 视为单词的可能“子字符串”,这一点非常重要。有时可以是aaaa<TAG1>bbbb,有时直接是<TAG1>。正如您在示例中看到的那样,它适用于两种情况。
【问题讨论】:
-
所有'n个单词'的东西似乎都是多余的,因为你已经在标签之前、之间和之后匹配了'any'。