因此,我有一个正则表达式,该正则表达式匹配以提取我要在文本中查找的数据:
([A-Z]+A{5,})
这将在以下示例文本中选择我要查找的代码:
Use these licenses with the VMware ESX build.
Feature License Code Description
------------------- ---------------------------- --------------------------------------------
CIFS CAYHXPKBFDUFZGABGAAAAAAAAAAA CIFS protocol
FCP APTLYPKBFDUFZGABGAAAAAAAAAAA Fibre Channel Protocol
我想要的最终结果是对文档进行替换,这将产生一个包含文本的文本文档
CAYHXPKBFDUFZGABGAAAAAAAAAAA,APTLYPKBFDUFZGABGAAAAAAAAAAA
答案 0 :(得分:3)
您可以像这样在正则表达式中添加替代项:
([A-Z]+A{5,})|\X
然后将其替换为:
(?1$1,)
替换字符串表示,如果匹配了第一个捕获组,则将其替换为$1,
,否则将其替换为空。
在注释中,我添加了一个负前瞻性,以避免在匹配的子字符串(如果在末尾找到)之后添加逗号。但是,使用此正则表达式不可避免地要加上多余的逗号。
更好的方法:
(\b[A-Z]++\b(?<=A{5}))|\X
这使用了所有格修饰符和一个后向结尾来结束A
s。您不需要寻找A{5,}
,而只需要寻找A{5}
。如果您想匹配这样的字符串,即使在较长的单词中间也可以删除单词边界。