RegExp匹配string不是以我的开头
对于PMD,我希望有一个规则,告诉我这些丑陋的variables,从我的开始。 这意味着我必须接受所有不以我开始的variables。
所以,我需要一个RegEx(re),其行为如下:
re.match('myVar') == false re.match('manager') == true re.match('thisIsMyVar') == true re.match('myOtherVar') == false re.match('stuff') == true
我尝试了不同的(以后会列出,抱歉,现在不能访问),但还没有正常工作。
你可以像其他人一样使用前瞻断言。 或者,如果你只是想使用基本的正则expression式语法:
^(.?$|[^m].+|m[^y].*)
这匹配零或一个字符长( ^.?$
)的string,因此不能是my
。 或者两个或两个以上字符的string,当第一个字符不是m
可能会有更多字符( ^[^m].+
); 或者如果第一个字符是m
则不能跟随y
( ^m[^y]
)。
^(?!my)\w+$
应该pipe用。
它首先确保在string的开始处不能匹配my
,然后匹配字母数字字符直到string结尾。 string中任何位置的空格将导致正则expression式失败。 根据你的input,你可能希望在string的前面和后面去掉空格,然后把它传递给正则expression式,或者使用添加可选的空白匹配器到正则expression式,如^\s*(?!my)(\w+)\s*$
。 在这种情况下,反向引用1将包含variables的名称。
如果您需要确保您的variables名称以某组字符开头,请说[A-Za-z_]
,请使用
^(?!my)[A-Za-z_]\w*$
请注意从+
到*
的更改。
/^(?!my).*/
(?!expression)
是一个负面的前瞻; 它匹配从该位置开始expression
不匹配的位置。
做一个积极的匹配和拒绝这些string,而不是匹配否定string接受?
/^my/