2

我正在努力使用 RegEx,并希望在这里找到一些指导。我已经在这里和谷歌上进行了搜索,但我很难找到合适的术语。我可以想象非捕获组会帮助我,但我不知道如何应用它们。

基本上我想找到 Java 单行注释,它们是“尖叫”(没有小写字母):

^[ \t]*//[^a-z]+?$

现在我也发现了这样的评论:

// PN-123456 
// ITK 12345
//IT-12345

这些评论对我来说是有效的,所以我想从上面的 RegEx 中排除它们。总是这样的模式:

  1. 可选空格
  2. “PN”或“IT”或“ITK”
  3. 连字符、空格或什么都没有
  4. 四到六位数
  5. 可选空格

这是我对这种模式的方法:

[ ]?PN[ -]?[0-9]{1,6}

但是现在我无法在一个 RegEx 中将两个表达式结合起来。这将如何工作?

TIA,彼得

4

1 回答 1

8

你想要一个负面的前瞻

^//(?!\s*(?:PN|ITK?)[ -]?[0-9]{1,6}[ ]*$)[^a-z]+?$

请注意,[^a-z]+要求不会有小写字母,但与“仅大写字母”并不完全相同。例如,它会捕捉到评论// ----------,甚至是一个空的//(只要有空格)。

示例:http ://regexr.com?31app

于 2012-06-21T10:42:30.810 回答