用于从规范类名解析Java包和类名的正则表达式

我正在配置一个使用正则表达式解析日志的日志解析系统(Logstash)。我正在尝试从规范的(即完全限定的)Java类名中解析出一个包名和类名,但是我不太正确。

这是一些示例输入

  1. UnpackagedClass

  2. somepackage.SomeClass

  3. java.lang.Object

  4. java.util.function.Function

预期输出(捕获组):

  1. (空字符串), UnpackagedClass

  2. somepackage, SomeClass

  3. java.lang, Object

  4. java.util.function, Function

这是我尝试的内容:((?:(?:X)\.)*)((?:X)),其中X[a-zA-Z_$][a-zA-Z\d_$]*Java标识符的正则表达式。完全扩展了,它是:((?:(?:[a-zA-Z_$][a-zA-Z\d_$]*)\.)*)((?:[a-zA-Z_$][a-zA-Z\d_$]*))。它已经很接近了,但是在包名称后面有一段尾随的句点,它们被捕获为包名称的一部分:

  1. (空字符串), UnpackagedClass

  2. somepackage., SomeClass

  3. java.lang., Object

  4. java.util.function., Function

关于如何改善这一点有什么建议吗?这是RegExr游乐场可以为您提供帮助。


阿晨1998
浏览 263回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java