因此,我有一个匹配的正则表达式来提取我在文本中寻找的数据:
([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发布于 2018-07-15 05:05:37
您可以向正则表达式添加如下所示的替换:
([A-Z]+A{5,})|\X然后将其替换为:
(?1$1,)替换字符串意味着,如果第一个捕获组匹配,则用$1,替换它,否则将其替换为空。
在注释中,为了避免在匹配的子字符串后面添加逗号(如果在末尾找到),我添加了一个负的向前看。但是在这个正则表达式中,一个额外的后缀逗号是不可避免的。
一种更好的办法:
(\b[A-Z]++\b(?<=A{5}))|\X这使用了拥有式量词和查找结束A的方法。您不需要查找A{5,},而只需要查找A{5}。如果您想要匹配这样的字符串,即使在较长的单词的中间找到,也可以删除单词边界。
https://stackoverflow.com/questions/51344925
复制相似问题