2024-09-23 22:28:08 发布
网友
我想要一个正则表达式,它可以捕获带有两个可选前缀的单词,但不能只捕获第一个前缀。我使用的是python3.6。 它应该捕获
cat nicecat bigcat
在这两个词前面加上前缀
supernicecat fatbigcat
但它不应该捕捉
fatcat supercat xyzcat
这是我目前掌握的情况。不太管用
\b(\w+)?(?:big|nice)?cat\b
你可以这样做
\b(?:\w*?(?:big|nice))?cat\b
将\w*放入可选组
给你:
^(?:[a-z]*(?:big|nice))?cat$
确保启用多行标志。我假设每个条目都在自己的行上
正则表达式的问题是,由于问号的缘故,您生成了big|nice或nothing。我的建议是在它前面添加[a-z]*,然后在(?:[a-z]*(?:big|nice))表达式上添加问号,以便允许独立的cat匹配
big|nice
[a-z]*
(?:[a-z]*(?:big|nice))
cat
将它们包装在另一组中:
\b(?:(\w+)?(?:big|nice))?cat\b
Live demo
你可以这样做
将\w*放入可选组
给你:
确保启用多行标志。我假设每个条目都在自己的行上
正则表达式的问题是,由于问号的缘故,您生成了
big|nice
或nothing。我的建议是在它前面添加[a-z]*
,然后在(?:[a-z]*(?:big|nice))
表达式上添加问号,以便允许独立的cat
匹配将它们包装在另一组中:
Live demo
相关问题 更多 >
编程相关推荐