0
[a-zA-Z]_*[a-zA-Z0-9]*  

我的目标是匹配:

astring_something;
helloall90

但不是 :

Astring
_helloall

我的正则表达式保护我的标识符应该以小写字母开头。但它不适用于_案例。传递字符串:

astring_something;

未被正确识别。它被确定为astringsomething遗漏_

我在哪里犯错误?

4

3 回答 3

2

我想你希望它以一个字母开头,后跟零个或多个字母、数字或下划线。如果是这样,您需要将下划线移动到第二组字符中。

改变:

[a-zA-Z]_*[a-zA-Z0-9]*

至:

[a-zA-Z][a-zA-Z0-9_]*

或者,如果它必须以小写字母开头:

[a-z][a-zA-Z0-9_]*
于 2012-10-18T12:25:33.890 回答
1

您当前仅匹配下划线前的单个字符。

[a-zA-Z]*_[a-zA-Z0-9]*  

这是否是您真正想要的,是一个不同的问题。例如,带有多个下划线的东西呢?

于 2012-10-18T12:24:05.767 回答
0

尝试

^[a-z]+_*[a-zA-Z0-9]+

在哪里 ...

^[a-z]+

表示它必须以一个或多个小写字母开头,后跟 ...

_*

零个或多个 _ 字符,后跟 ...

[a-zA-Z0-9]*

零个或多个字母数字字符。

此模式将匹配 astring_something 和 helloall90 但不匹配 _helloall 和 Astring

于 2012-10-18T19:32:45.837 回答