Regexp匹配除特定字符串之外的任何大写字符

Ala*_*lan 5 regex

我想匹配所有包含任何大写字符的行,但忽略字符串A_

为了增加复杂性,我想忽略不同字符串之后的所有内容,例如开放式注释

以下是应该和不应该匹配的示例

火柴:

  • Foobar的
  • foo Bar foo
  • A_fooBar
  • fooBar/*评论*/

不匹配(C_不应触发匹配)

  • A_foobar
  • foo A_bar
  • foob​​ar的
  • foo bar foo bar
  • foob​​ar/*评论*/

谢谢 :)

Bar*_*ers 5

这应该(也?)做到这一点:

(?!A_)[A-Z](?!((?!/\*).)*\*/)
Run Code Online (Sandbox Code Playgroud)

简短的解释:

(?!A_)[A-Z]     # if no 'A_' can be seen, match any uppercase letter
(?!             # start negative look ahead
  ((?!/\*).)    #   if no '/*' can be seen, match any character (except line breaks)
  *             #   match zero or more of the previous match
  \*/           #   match '*/'
)               # end negative look ahead
Run Code Online (Sandbox Code Playgroud)

所以,用简单的英语来说:

匹配除“A_”之外的任何大写字母,并且如果在没有首先遇到“/*”的情况下可以看到“*/”,则也不是大写字母。