正则表达式删除所有文本但字符串
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}
。如果您想匹配此类字符串,即使在较长单词的中间也可以删除单词边界。
所以我有一个匹配的正则表达式来提取我在文本中查找的数据:
([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}
。如果您想匹配此类字符串,即使在较长单词的中间也可以删除单词边界。