我正在学习Python 3,但我很难用re模块获得正则表达式。
我的问题是:我有绳子
phrase = "s000000000 s1133122 s21 s3 s4 s5212638476234857634 s6 s7 s8 s9000"
以及,使用该函数
re.findall(pattern, phrase)
我想提取:
通过使用以下模式,我成功地完成了前三项任务:
pattern = "s[0-9]"pattern = "s[0-3]"pattern = "s[0-3]+"但是,对于最后一项任务,我试图复制第三项任务中所做的工作,并使用
pattern = "s[4-9]+"
但是,与其结果是
["s4", "s5212638476234857634", "s6", "s7", "s8", "s9000"]
我得到了
["s4", "s5", "s6", "s7", "s8", "s9"]
为什么会这样呢?我遗漏了什么?我正在学习的书中的说明说明加号的意思是“一个或多个字符”,而s0-3+模式实际上是有效的,但我不能使它适用于这个特定的问题。
发布于 2021-01-27 16:48:52
你需要用
s[4-9]\d*见regex演示。注意:如果s前面不应该有任何单词字符,\bs[4-9]\d*,您可能希望从一个单词边界开始匹配。在Python中,它看起来像r'\bs[4-9]\d*'。
详细信息
s -一个s字符[4-9] -从4到9的数字\d* -零或更多位数。import re
rx = r"s[4-9]\d*"
text = "s000000000 s1133122 s21 s3 s4 s5212638476234857634 s6 s7 s8 s9000"
print( re.findall(rx, text) )
# => ['s4', 's5212638476234857634', 's6', 's7', 's8', 's9000']https://stackoverflow.com/questions/65923618
复制相似问题