1

我在算法设计方面相当差,并且有一个复杂的问题 - 请看一下。我目前正在使用 Java/Groovy。

我有一些看起来像这样的文本:

AAAAA  
AAAAA
CCCCC
any stuff here  
111  
any stuff here  
AAAAA  
stuff  
AAAAA  
stuff  
AAAAA  

BBBBB  
stuff  
222  
stuff  
BBBBB   

我的挑战是抓取所有格式为 AAAAA stuff 111 stuff AAAAA 的字符串,而不抓取任何周围的文本。可以看到字符串中有多个AAAAA,但我必须只抓取最接近111s和222s的那些,然后对所有这种类型的字符串执行此操作。

我的正则表达式(不起作用)如下所示:

/(\w{8}|\w{11}).*?(\w{3}).*?\1/  

我一直在玩一堆他们,他们要么抓取太多文本,要么执行得太慢......如果有人知道我应该使用什么来解决这类问题,请告诉我。

编辑:这些是我想要匹配的:

AAAAA
CCCCC
any stuff here  
111  
any stuff here  
AAAAA  

BBBBB  
stuff  
222  
stuff  
BBBBB  

我想说这很像解析不正确标记的 XML。无论如何,感谢您的关注。

4

1 回答 1

2

使用正则表达式模式

(?s)\b(\w{5})\b(?:(?!\1).)*?\b\w{3}\b(?:(?!\1).)*?\1
于 2012-10-23T18:43:04.583 回答