首页 > 解决方案 > 如果字符串有 X 个以 @#$ 开头的单词,则 Python 正则表达式匹配:

问题描述

我想要做的是匹配字符串,如果该字符串包含 X 数量(比如说 5)以 @#$: 字符开头的单词。

假设 X 为 5 的示例:

@someword someotherword anotherword word1 word2 word3 => false
@someword :someotherword #anotherword $word1 word2 word3 => false
@someword :someotherword #anotherword $word1 #word2 $word3 => true

标签: pythonregex

解决方案


假设这些符号仅在单词字符之前使用,您可以使用此正则表达式:

(?:]\B[@#$:]\w+[^@#$:]*){5}

正则表达式演示

代码:

>>> arr = ['@someword someotherword anotherword word1 word2 word3', 
'@someword :someotherword #anotherword $word1 word2 word3',
'@someword :someotherword #anotherword $word1 #word2 $word3']
>>> reg = re.compile(r'(?:\B[@#$:]\w+[^@#$:\n]*){5}');
>>> for i in arr:
...     print(reg.findall(i))
...
[]
[]
['@someword :someotherword #anotherword $word1 #word2 ']
  • \B: 匹配\b不匹配的地方。
  • [@#$:]\w+: 匹配 1+ 个以开头的单词字符[@#$:]
  • [^@#$:]*: 匹配 0 个或多个不包含的字符[@#$:]
  • (...){5}: 在当前输入中匹配 5 个

推荐阅读