首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保至少有一个A和B符号出现在正则表达式中?

如何确保至少有一个A和B符号出现在正则表达式中?
EN

Stack Overflow用户
提问于 2022-05-13 04:18:33
回答 1查看 44关注 0票数 2
代码语言:javascript
复制
s_l = ["春天年初, ...","1999年", "很多年以前"]
for front_part in s_l:
    idx_year = re.search(r'[\d]*[年]{1}[初末底前]{0,1}',front_part).end() \
    if re.search(r'[\d]*[年]{1}[初末底前]{0,1}',front_part) else 0
    print(idx_year)

我想搜索具有的子字符串的idx,同时,在 [初末底前](符号B)后面必须有数字(符号A),例如,在s_l中,它应该返回4,5,0

一种划分正则表达式的方法,比如

代码语言:javascript
复制
re.search(r'[\d]+[年]{1}',front_part) or re.search(r'[年]{1}[初末底前]{0,1}',front_part)

但是它太复杂了,另一个是使用(?=...),但我还没有这个想法,以及如何使用它,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-13 05:02:49

您可以使用查找后断言来匹配前面有一个数字的事件。使用交替模式来匹配后面跟着[初末底前]的模式

代码语言:javascript
复制
pattern = re.compile(r'(?<=\d)年|年[初末底前]')
print([match.end() if match else 0 for match in map(pattern.search, s_l)])

这一产出如下:

代码语言:javascript
复制
[4, 5, 0]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72224387

复制
相关文章

相似问题

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