无法找到具有前瞻/后视功能的正则表达式

Trouble finding a regular expression with lookahead/ lookbehind funcftion

我在正确设置正则表达式方面遇到了问题。我正在寻找以下字符串中的特定数字。例如,下面是一些字符串以及我正在使用的正则表达式

matcher = re.compile(r'(?<=[/\- ])([0-9]+)')
string = 'Redundant 100/70/50/50-0/0/0/0; EX-SEP ANN IMPLANT MAX.                     '
string2 = 'Big High 200/40/40/0/0-80/60/40/0/0; EX-WP 9months 7.                                                                                                                                                                                                 '

结果是

['100', '100', '85', '50', '0', '0', '0', '0']
['100', '80', '50', '0', '0', '80', '60', '40', '0', '0', '9', '7']

例如,我想找出一种方法来仅获取“/”旁边的数字,而不获取第二个字符串中的“9”和“7”。我找不到执行此操作的方法,并尝试使用后向表达式,但如果不检索字符串中的其他数字,就无法获得我想要的数字。

这对我来说是全新的,对于为什么我没有得到每个字符串的预期答案的任何帮助,我将不胜感激

您可以使用

匹配接近/-的数字序列
(?<=[/-])[0-9]+|[0-9]+(?=[/-])

查看 regex demo 和正则表达式图:

详情

  • (?<=[/-])[0-9]+ - 一个或多个前面有 /- 的数字
  • | - 或
  • [0-9]+(?=[/-]) - 一位或多位紧跟 /- 的数字。