java - 匹配全限定类名的正则表达式

标签 java regex class matching fully-qualified-naming

在文本中匹配完全限定的 Java 类名的最佳方法是什么?

示例:java.lang.Reflectjava.util.ArrayListorg.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

它们也不能是保留字(如 importtruenull)。如果您只想检查合理性,以上就足够了。如果您还想检查有效性,还必须检查保留字列表。

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}_$]*

Java Language Specification, (section 3.8)包含有关有效标识符名称的所有详细信息。

另请参阅此问题的答案:Java Unicode variable names

关于java - 匹配全限定类名的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205339/

相关文章:

java - 如何找到部署在 weblogic 服务器上的 war 文件的部署日期

java - 使用正则表达式在带有 XML 标签的字符串上提取标签和标签之间的文本

C++ 不能使用另一个文件中的类

java - 从另一个Java类调用 "non-void"方法

java - Dataflow 大型侧输入中的 Apache Beam

java - 对象内部方法的模拟创建

java - Spring Boot 如何使用 HiddenHttpMethodFilter

c# - 正则表达式给出编译器错误

java - java字符串替换效率

C# 从接口(interface)转换类型