【发布时间】:2019-11-06 11:22:01
【问题描述】:
我正在尝试从字符串中提取类路径。字符串格式可以包含不同的类路径
(字符串示例:DEBUG(tab)a.b.c.d.classname#,INFO(tab)a.classname#)
我拥有的正则表达式:
如果路径(?:\w\.\w\.[^#]*) 中有多个点可以正常工作,但是当我添加|(?:[^\d]\w\.\w{1,9999}[^#]*) 时,如果类路径包含一个点(上面的第二个示例),它也会选择选项卡。基本上我想制作一个匹配任何类路径的正则表达式。如果类路径只有一个点,如何选择路径?
完整的字符串示例:
2019-01-01 01:01:01.000+0000 [id=1](tab_here)INFO(tab_here)a.package.classname#sometext: somemoretext
到目前为止,正则表达式的样子:
(?:\w\.\w\.[^#]*)|(?:[^\d]\w\.\w{1,9999}[^#]*)
更新
我想要的结果是一个没有tab 的类路径匹配,而它只包含一个dot:
the result I have with tab..
更新 #2:
所有答案都很棒,但我不得不修改 Vincents 以达到我想要的效果。最终的正则表达式是
(\w+(?:\.\w+)+)(?=#)
想要前后都没有任何东西。结果和文森特的输出一样。
感谢所有参与的人!
【问题讨论】:
-
我不明白你想要得到什么输出。您的问题中缺少的是具有预期输出的输入的明确示例。您提供了一些输入示例,但您想要什么输出?
标签: regex