我想解析变量声明语句并获取变量名称。我正在做下面的事情
String var = "private String ipaddress;";
我使用下面的正则表达式模式来匹配上面的字符串
.*private\\s+([a-z]*)\\s+([a-z0-9_]*);
这是行不通的。它说找不到匹配项有人可以帮忙吗?
首先,从正则表达式的开头删除该点,因为它需要在private
为了一场比赛。
其次,您的正则表达式区分大小写,并且不会匹配大写字母 s。要么使用[a-zA-Z]
或使表达式不区分大小写((?i)
在开始 IIRC 时)。
Btw, [a-zA-Z0-9_]
会是一样的\w
.
另一件事:您的表达式还会捕获非法变量名称以及错过合法变量名称。变量不允许以数字开头,但也可以包含美元符号。因此名称表达式应该类似于([a-zA-Z_$][\w$]*)
意味着第一个字符必须是字母、下划线或美元符号,后跟任意数量的单词字符或美元符号。
最后一点:根据您对这些声明的处理方式,请记住您可能需要检查这些保留字。调整后的表达式仍然匹配"private String private"
, 例如。
最后一点:请记住,修饰符可能比private
对于变量,例如public
, protected
, static
等等——或者根本没有。
Edit:
既然您在第一个点后面有星号,那么这对于您的特殊情况来说应该不是问题。然而,点几乎匹配任何字符,因此会匹配fooprivate
以及。根据您想要实现的目标,删除点或添加一个\s+
之后.*
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)