简单的正则表达式反转不返回完整的单词

时间:2016-04-05 04:14:52

标签: regex

我有非常简单的正则表达式代码:

(project-(?!old|rejected))

我有以下字符串列表:

project-ok 2016/3/4 
project-new 2016/4/5
project-in-progress 2015/3/8
project-cancel 2014/2/7
project-rejected 2011/9/2
... etc.

我想捕获项目 - 除了项目旧和项目拒绝之外的任何东西。

尝试匹配时: project-ok 2016/3/4 。我希望它返回'project-ok'这个词,但我得到了返回值:'project - '

如何匹配项目标签的全部字样?

3 个答案:

答案 0 :(得分:1)

尝试

  

project-(?!old\s|rejected\s)[-a-z]+

https://regex101.com/r/wX2eY8/3

答案 1 :(得分:1)

让我们看看您尝试使用(project-(?!old|rejected))

做些什么
  • project-匹配project-

  • (?!old|rejected)向前看并检查是否存在oldrejected。如果是,则不匹配。但是在不存在

  • 之后无事可做

因此,您需要匹配标签,直到发现空白。这可以通过在您之前的条件之后使用\S+[^\s]+来完成。

完整的正则表达式如下所示:project-(?!old|rejected)[^\s]+

<强> Regex101 Demo

答案 2 :(得分:0)

你可以试试这个:

mToolbar.getMenu().findItem(id).setEnabled(false);

这里有相同的解剖:

(?i)(project-(?!old|rejected)\b[-0-9a-z/ ]+)

希望这有帮助。