Python 如果组位于特定字符串之前或之后,则使用正则表达式捕获组
如果数字在某个文本(“b”)之前或之后,我想使用python和单个正则表达式获取一个数字。这里的“单身”很重要 因此,以下情况应该匹配(即使第一个是可选的,因为永远不会发生…)Python 如果组位于特定字符串之前或之后,则使用正则表达式捕获组,python,regex,Python,Regex,如果数字在某个文本(“b”)之前或之后,我想使用python和单个正则表达式获取一个数字。这里的“单身”很重要 因此,以下情况应该匹配(即使第一个是可选的,因为永远不会发生…) b 1 b b 2 c c 3 b 这不应: C4D 我到处玩弄(向前看和向后看),但什么也没用。 我相信这应该是可能的使用一些环顾四周的东西和。。。魔术但我不知道怎么 请看此作为起点 如果这不可能,为什么? 如果可能的话,怎么做?我建议使用两个正则表达式匹配器,一个用于捕获文本前的数字(“b”),另一个用于捕获
- b 1 b
- b 2 c
- c 3 b
- C4D
如果可能的话,怎么做?我建议使用两个正则表达式匹配器,一个用于捕获文本前的数字(“b”),另一个用于捕获文本后的数字 匹配文本“b”之前的数字。
/([0-9]+)b/g
/b([0-9]+)/g
匹配文本“b”后的数字。
/([0-9]+)b/g
/b([0-9]+)/g
使用您给出的示例,以下模式将匹配前面有
b
或后面有b
的任何数字(由一个或多个连续数字组成的组)
(?<=b\s)\d+|\d+(?=\sb)
(?您可以使用此正则表达式r'(?这是我的实际解决方案,但我想要一个带有单个正则表达式的解决方案…上下文是,如果我使用wto正则表达式,其中一个将失败并触发错误,如果我可以避免在错误处理程序中处理这一问题,我将非常高兴。您可以使用正则表达式中的“或”量词将两者结合起来。这对javascript有效,您可以在python上尝试。/b([0-9]+)|([0-9]+)b/gb因为指向regex101的链接错误。抱歉…@WiktorStribiżew使用bultinre
模块在Python中进行了测试,如下所示。Python>>>text='''''..b1b…b2c…c3b…c4d…'>>pattern=re.compile(r'(?另一个问题:在python中,匹配的结果是第一个和第二个匹配的元组。如果有一个只返回一个匹配项(d+)的正则表达式就好了。。。