Regex是一个无序列表,由不同的';分隔符';用python
我试图构造一个正则表达式来捕获与Regex是一个无序列表,由不同的';分隔符';用python,python,regex,Python,Regex,我试图构造一个正则表达式来捕获与\w{0,}?\s\d{0,}匹配的字符串,即一个单词后跟一个空格,然后是一个数字。我把它做了个模型 仅用逗号分隔的前N个匹配项为组1。 字符串“opt”后的N个匹配项(仅用逗号分隔)为组2 仅用逗号分隔的字符串“和/或”后的N个匹配项为组3 我的尝试是:(\w+?\s\d),\s+(\w+?\s\d))*(\s+和/或\s+(\w+?\s\d))*(\s+opt\s+(\w+?\s\d))* 但我肯定有一些案件我没有想到。我基本上知道这是与订单相关的,我不想这样
\w{0,}?\s\d{0,}
匹配的字符串,即一个单词后跟一个空格,然后是一个数字。我把它做了个模型
仅用逗号分隔的前N个匹配项为组1。字符串“opt”后的N个匹配项(仅用逗号分隔)为组2
仅用逗号分隔的字符串“和/或”后的N个匹配项为组3 我的尝试是:
(\w+?\s\d),\s+(\w+?\s\d))*(\s+和/或\s+(\w+?\s\d))*(\s+opt\s+(\w+?\s\d))*
但我肯定有一些案件我没有想到。我基本上知道这是与订单相关的,我不想这样。
您正在寻找三种不同的场景:
字符串以nothing开头
或字符串以'opt'开头
或字符串以'and/or'开头
这与:
(?: # Non matching group
| # Nothing or
\s+and/or\s+| # ' and/or ' or
\s+opt\s+ # ' opt '
) # followed by
然后,在每个场景中,您将查找一个或多个由逗号分隔的(\w+?\s\d)
(
(\w+?\s\d) # a word followed by a single digit
(?:,\s+ # preceeding comma and at least one space.
(\w+?\s\d))* # zero or more word-digit combinations as above,
)* # Any number of these
在上面的解释要好得多
(
(\w+?\s\d) # a word followed by a single digit
(?:,\s+ # preceeding comma and at least one space.
(\w+?\s\d))* # zero or more word-digit combinations as above,
)* # Any number of these