[英]trying to find all digits that are followed by either a whitespace or a dash using regex
我正在尝试使用正则表达式查找后跟空格或破折号的所有数字
现在帽子的样子:
import re
txt = "123 4 56-7 maine x1s56"
x = re.findall(r"\d+\s|-\b)", txt)
print(x)
结果是:
['123 ', '4 ', '-', '7 ']
但它应该打印:
['123 ', '4 ', '56', '7 ']
交替运算符 ( |
) 在所有正则表达式运算符中具有最低优先级。 也就是说,它告诉正则表达式引擎匹配垂直条左侧的所有内容或垂直条右侧的所有内容。
所以正则表达式r"\d+\s|-\b)"
表示(一个或多个数字后跟一个空格)或(一个破折号后跟一个单词边界)。
如果要限制交替的范围,则需要使用括号进行分组。 或者,由于您只想在两个字符之间交替,您可以使用字符 class 代替。
import re
txt = "123 4 56-7 maine x1s56"
x = re.findall(r"\d+[\s-]", txt)
print(x)
Output:
['123 ', '4 ', '56-', '7 ']
所以,棘手的部分是空格和连字符都是匹配的一部分,但只有空格被包含在匹配中。 您需要在前瞻中使用连字符,但在外部需要空格,如下所示:
\d+(\s|(?=-))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.