我正在尝试定义一种可能允许一个下划线的模式,然后它必须具有集合 "[\\w_]"
中的一个或多个合法字符(即,一个单词或下划线)。因此 "_"
应该返回 false,但是 "__"
或 "a"
或 "\_a"
或"a_"
应该全部返回 true。
我尝试过使用该模式
(_)?[\\w_]+
但它在 _
上返回 true。你知道为什么吗?
最佳答案
\w
已经包含下划线字符,您所要做的就是确保如果子字符串以下划线开头还有其他单词字符:
_\\w+|[^\\W_]\\w*
或者不以交替方式开始模式,您可以这样做:
\\w(?:(?<=_)\\w+|(?<!_)\\w*)
关于java - 正则表达式可能有一个下划线,然后至少有一个合法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44472186/