Regex有两个可选组,但不只是第一个组

2024-09-23 22:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要一个正则表达式,它可以捕获带有两个可选前缀的单词,但不能只捕获第一个前缀。我使用的是python3.6。 它应该捕获

cat
nicecat
bigcat

在这两个词前面加上前缀

supernicecat
fatbigcat

但它不应该捕捉

fatcat
supercat
xyzcat

这是我目前掌握的情况。不太管用

\b(\w+)?(?:big|nice)?cat\b

Tags: 情况单词catnicebigbigcatsupercatnicecat
3条回答

你可以这样做

\b(?:\w*?(?:big|nice))?cat\b

将\w*放入可选组

给你:

^(?:[a-z]*(?:big|nice))?cat$

确保启用多行标志。我假设每个条目都在自己的行上

正则表达式的问题是,由于问号的缘故,您生成了big|nice或nothing。我的建议是在它前面添加[a-z]*,然后在(?:[a-z]*(?:big|nice))表达式上添加问号,以便允许独立的cat匹配

将它们包装在另一组中:

\b(?:(\w+)?(?:big|nice))?cat\b

Live demo

相关问题 更多 >