因此,我一直在尝试使用正则表达式来解析以下字符串:

INFO: Device 6: Time 20.11.2015 06:28:00 - [Script] FunFehlerButton: Execute [0031 text]
and
INFO: Device 0: Time 09.12.2015 03:51:44 - [Replication] FunFehlerButton: Execute
and
INFO: Device 6: Time 20.11.2015 06:28:00 - FunFehlerButton: Execute


我尝试使用的正则表达式是:

(?<=\\d{1,2}:\\d{2}:\\d{2} - ).*




(?<=\\[\\w*\\]).*


其中第一个可以正常运行,第二个可以正常运行。

我的目标是获取文本“ FunFehlerButton:执行...”。

我希望有人可以向我暗示正确的方向。

最佳答案

Java仅在大小受限制并且在lookbehind中的子模式不太复杂的情况下才支持可变长度lookbehind。

简而言之,你不能写:

(?<=\\[\\w*\\]).*


但是你可以这样写:

(?<=\\[\\w{0,1000}\\]).*


但是类似:

(?<=\\[(?:\\w{0,2}){0,500}\\w?\\]).*


由于最大长度不明显,因此不起作用。

关于java - 正则表达式正后方明显最大长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34616478/

10-10 10:09