Regex在python中用不同的“分隔符”分隔的无序列表

2024-09-29 01:27:29 发布

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

我试图构造一个regex来捕获匹配\w{0,}?\s\d){0,}的字符串,即一个单词后跟空格,然后是一个数字。我把它改装了here

前N个仅用逗号分隔的匹配项是组1。
字符串“opt”后面的N个匹配项仅用逗号分隔,它们是组2
字符串“and/or”后面的N个匹配项仅用逗号分隔,它们是组3

我的尝试是:((\w+?\s\d),\s+(\w+?\s\d))*(\s+and/or\s+(\w+?\s\d))*(\s+opt\s+(\w+?\s\d))*

Mind 3 opt Life 3, Prime 3 and/or Death 3 #This is not matched
Life 3, Mind 3 opt Prime 3 and/or Death 3 #This is matched
Life 3, Death 3 and/or Mind 3 opt Prime 3 #this is matched

但我肯定有一些我没想到的边缘案例。我基本上知道这和秩序有关,我不想这样。在


Tags: orand字符串isthis单词primeregex
1条回答
网友
1楼 · 发布于 2024-09-29 01:27:29

^{}

您正在寻找三种不同的方案:

String starts with nothing或{}或{}

这与:

(?:                     # Non matching group
    |                   # Nothing or 
    \s+and/or\s+|       # ' and/or ' or
    \s+opt\s+           # ' opt '
)                       # followed by

然后在每个场景中,您要查找一个或多个由逗号分隔的(\w+?\s\d)。在

^{pr2}$

上面的解释要好得多link。在

相关问题 更多 >