正则表达式删除所有文本但字符串

regex remove all text but string

所以我有一个匹配的正则表达式来提取我在文本中查找的数据:

([A-Z]+A{5,})

这将 select 我在以下示例文本中查找的代码:

Use these licenses with the VMware ESX build.

Feature               License Code                   Description
-------------------   ----------------------------   --------------------------------------------

CIFS                  CAYHXPKBFDUFZGABGAAAAAAAAAAA   CIFS protocol
FCP                   APTLYPKBFDUFZGABGAAAAAAAAAAA   Fibre Channel Protocol 

我想要的最终结果是对文档进行替换,生成包含文本

的文本文档
CAYHXPKBFDUFZGABGAAAAAAAAAAA,APTLYPKBFDUFZGABGAAAAAAAAAAA

您可以像这样向您的正则表达式添加一个替代项:

([A-Z]+A{5,})|\X

然后替换为:

(?1,)

替换字符串意味着,如果匹配到第一个捕获组,则将其替换为,,否则将其替换为空。

在评论中,我添加了否定前瞻,以避免在匹配的子字符串后添加逗号(如果在末尾找到)。但是对于这个正则表达式,一个额外的尾随逗号是不可避免的。


更好的方法:

(\b[A-Z]++\b(?<=A{5}))|\X

这使用所有格量词和结束 A 的回顾。您不需要查找 A{5,},但您只需要查找 A{5}。如果您想匹配此类字符串,即使在较长单词的中间也可以删除单词边界。