我的算法设计很差,并且有一个复杂的问题 - 请看一下。我目前在Java / Groovy工作。
我有一些看起来像这样的文字:
AAAAA
AAAAA
CCCCC
any stuff here
111
any stuff here
AAAAA
stuff
AAAAA
stuff
AAAAA
BBBBB
stuff
222
stuff
BBBBB
我的挑战是抓住AAAAA格式的所有字符串111东西AAAAA,而不抓取任何周围的文本。您可以看到字符串中有多个AAAAA,但我必须只抓取最接近111和222的那些,然后对所有类型的字符串执行此操作。
我的正则表达式(不工作)如下所示:
/(\w{8}|\w{11}).*?(\w{3}).*?\1/
我一直在和他们一起玩,他们要么抓得太多文字要么说得太慢......如果有人知道我应该用什么来解决这类问题,请告诉我。
编辑:这些是我想要匹配的内容:
AAAAA
CCCCC
any stuff here
111
any stuff here
AAAAA
和
BBBBB
stuff
222
stuff
BBBBB
我认为这非常类似于解析不正确标记的XML。 无论如何,谢谢你的期待。
答案 0 :(得分:2)
使用正则表达式
(?s)\b(\w{5})\b(?:(?!\1).)*?\b\w{3}\b(?:(?!\1).)*?\1