在文本中匹配完全限定的 Java 类名的最佳方式是什么?
例子:java.lang.Reflect
, java.util.ArrayList
, org.hibernate.Hibernate
.
Java 完全限定类名(假设为“N”)具有以下结构
N.N.N.N
“N”部分必须是 Java 标识符。 Java 标识符不能以数字开头,但在第一个字符之后可以使用字母和数字、下划线或美元符号的任意组合:
([a-zA-Z_$][a-zA-Z\d_$]*\.)*[a-zA-Z_$][a-zA-Z\d_$]*
------------------------ -----------------------
N N
它们也不能是保留字(例如import
, true
or null
)。如果您想检查合理性只是,以上就够了。如果您还想检查validity,您还必须检查保留字列表。
Java 标识符可以包含任何 Unicode 字母,而不是“仅限拉丁语”。如果您也想检查这一点,请使用 Unicode 字符类:
([\p{Letter}_$][\p{Letter}\p{Number}_$]*\.)*[\p{Letter}_$][\p{Letter}\p{Number}_$]*
或者,简称
([\p{L}_$][\p{L}\p{N}_$]*\.)*[\p{L}_$][\p{L}\p{N}_$]*
The Java 语言规范(第 3.8 节) http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.8包含有关有效标识符名称的所有详细信息。
另请参阅此问题的答案:Java Unicode 变量名 https://stackoverflow.com/questions/1422655/java-unicode-variable-names/1422681#1422681
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)