为了账号安全,请及时绑定邮箱和手机立即绑定

如果字符串有 X 个以@#$ 开头的单词,则 Python 正则表达式匹配:

如果字符串有 X 个以@#$ 开头的单词,则 Python 正则表达式匹配:

墨色风雨 2021-09-25 16:36:56
我想要做的是匹配字符串,如果该字符串包含 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
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

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

(?:]\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 个


查看完整回答
反对 回复 2021-09-25
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

积极的前瞻将是做到这一点的一种方法:


input = "@someword :someotherword #anotherword $word1 #word2 $word3"

result = re.match(r'.*((?<=\s)|(?<=^))[@#$:]\S+.*(\s[@#$:]\S+.*){4}', input)


if result:

    print("Found a match")

这个问题很棘手,因为你想用 start a special symbol 匹配单词[@#$:]。但是,我们不能只使用单词边界\b,因为特殊字符不是单词字符。因此,相反,我们可以检查目标术语开头之前的内容是空格还是字符串的开头。


查看完整回答
反对 回复 2021-09-25
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

正确的正则表达式是((?:[@#$].+){5}). 正则表达式解释


例子:


import re

...

tst = """

    @someword someotherword anotherword word1 word2 word3

    @someword :someotherword #anotherword $word4 #word5 $word6

    @someword :someotherword #anotherword $word1 word2 word3

    @someword :someotherword #anotherword $word1 #word2 $word3

"""

res = re.findall(r"((?:[@#$].+){5})", tst)

print(res)

结果:


['@someword :someotherword #anotherword $word4 #word5 $word6', '@someword :someotherword #anotherword $word1 #word2 $word3']

分享


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信