匹配任何东西,并在看到单词时停止

时间:2013-08-30 09:00:29

标签: regex

我的测试用例是:this is a sentence. reviewed: name DEFECT: none

我需要在reviewed:之后捕获任何内容,但在看到DEFECT:

时停止
reviewed: (.+)(?=\sTASK|\sDEFECT)

正确捕获name。但问题是匹配后没有DEFECT:,比如

this is a sentence. reviewed: name

不匹配。将正则表达式更改为

reviewed: (.+)(?=\sTASK|\sDEFECT)?  

reviewed: (.+)(?=\sTASK|\sDEFECT)*

匹配捕获所有name DEFECT: none。看到单词DEFECT: 后我应该使用什么来阻止匹配,但同时该单词可能根本不存在

我也试过以下但没有运气:

reviewed: (.+)?(?=\sTASK|\sDEFECT)?
              ^

让它变得非贪婪。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

在这种情况下,您可以将字符串的结尾与$匹配,如下所示:

/reviewed: (.+?)(?=DEFECT:|$)/