Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果组位于特定字符串之前或之后,则使用正则表达式捕获组_Python_Regex - Fatal编程技术网

Python 如果组位于特定字符串之前或之后,则使用正则表达式捕获组

Python 如果组位于特定字符串之前或之后,则使用正则表达式捕获组,python,regex,Python,Regex,如果数字在某个文本(“b”)之前或之后,我想使用python和单个正则表达式获取一个数字。这里的“单身”很重要 因此,以下情况应该匹配(即使第一个是可选的,因为永远不会发生…) b 1 b b 2 c c 3 b 这不应: C4D 我到处玩弄(向前看和向后看),但什么也没用。 我相信这应该是可能的使用一些环顾四周的东西和。。。魔术但我不知道怎么 请看此作为起点 如果这不可能,为什么? 如果可能的话,怎么做?我建议使用两个正则表达式匹配器,一个用于捕获文本前的数字(“b”),另一个用于捕获

如果数字在某个文本(“b”)之前或之后,我想使用python和单个正则表达式获取一个数字。这里的“单身”很重要

因此,以下情况应该匹配(即使第一个是可选的,因为永远不会发生…)

  • 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使用bultin
re
模块在Python中进行了测试,如下所示。
Python>>>text='''''..b1b…b2c…c3b…c4d…'>>pattern=re.compile(r'(?另一个问题:在python中,匹配的结果是第一个和第二个匹配的元组。如果有一个只返回一个匹配项(d+)的正则表达式就好了。。。