首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中选择regex模式

如何在Python中选择regex模式
EN

Stack Overflow用户
提问于 2021-01-27 16:47:26
回答 1查看 39关注 0票数 2

我正在学习Python 3,但我很难用re模块获得正则表达式。

我的问题是:我有绳子

phrase = "s000000000 s1133122 s21 s3 s4 s5212638476234857634 s6 s7 s8 s9000"

以及,使用该函数

re.findall(pattern, phrase)

我想提取:

  1. 没有附加字符的s0-s9字符串;
  2. 没有附加字符的s0-s3字符串;
  3. 具有附加字符的s0-s3字符串;
  4. 具有附加字符的s4-s9字符串。

通过使用以下模式,我成功地完成了前三项任务:

  1. pattern = "s[0-9]"
  2. pattern = "s[0-3]"
  3. pattern = "s[0-3]+"

但是,对于最后一项任务,我试图复制第三项任务中所做的工作,并使用

pattern = "s[4-9]+"

但是,与其结果是

["s4", "s5212638476234857634", "s6", "s7", "s8", "s9000"]

我得到了

["s4", "s5", "s6", "s7", "s8", "s9"]

为什么会这样呢?我遗漏了什么?我正在学习的书中的说明说明加号的意思是“一个或多个字符”,而s0-3+模式实际上是有效的,但我不能使它适用于这个特定的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-27 16:48:52

你需要用

代码语言:javascript
复制
s[4-9]\d*

regex演示。注意:如果s前面不应该有任何单词字符,\bs[4-9]\d*,您可能希望从一个单词边界开始匹配。在Python中,它看起来像r'\bs[4-9]\d*'

详细信息

  • s -一个s字符
  • [4-9] -从49的数字
  • \d* -零或更多位数。

Python演示

代码语言:javascript
复制
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']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65923618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档