【发布时间】:2021-04-12 10:07:32
【问题描述】:
我知道这个问题听起来与其他问题相似,但请参阅下面关于这些解决方案的说明。
我需要一个在 Python 中使用的正则表达式,以在字符串中以任意顺序搜索特定单词。我想要做的是在这一系列单词周围加上括号。
这是我的示例文本:
苹果、梨、香蕉是水果
梨、苹果和香蕉在水果篮里
您可以在水果沙拉中使用香蕉、梨和苹果
他还喜欢吃梨、香蕉和苹果
她喜欢奶酪当零食,也喜欢苹果或梨
最终,我希望能够在水果系列周围放置括号,如下所示:
[苹果、梨、香蕉]是水果
[梨、苹果和香蕉]在水果篮里
您可以在水果沙拉中使用 [香蕉、梨和苹果]
他还喜欢 [梨、香蕉和苹果] 作为零食
她喜欢把奶酪当零食,但也喜欢[苹果或梨]
在研究过程中,我发现了以下帖子:
Multiple words in any order using regex
当我在 Regex101 中测试这个解决方案时,它什么也没做。
Regex to match string containing two names in any order
此解决方案与第一个非常相似,但也不起作用。
Regex to match multiple words in any order
此解决方案最接近于稍作修改:
(APPLES|BANANAS|PEARS) \[\1]\
但是,这会将括号括在列出的每个水果周围,而不是围绕系列:
[苹果]、[梨]、[香蕉]是水果
我显然遗漏了一些东西,所以如果有人能给我任何帮助,我将不胜感激。
谢谢!
【问题讨论】:
-
(?i)\b(?:APPLES|BANANAS|PEARS)\b(?:\s*(?:,\s*)?(?:(?:or|and)\s+)?(?:APPLES|BANANAS|PEARS))*\b并替换为[\g<0>],参见regex101.com/r/RKv9ci/1