我想编写一个正则表达式从路径中获取路径信息。
输入行将是:
as path: 1 2 3 4.5 6 i (test)
我希望得到:['1', '2', '3', '4.5', '6', 'i']
我用Python编写了正则表达式:
re.findall(r'\b\d*[\.]?\d*\b|\bi\b', line)
但是我没有得到我期望的结果。我的正则表达式有什么问题?谢谢!
答案 0 :(得分:0)
由于第一个备选方案中的所有模式都可以匹配空字符串(?
和*
可以匹配0个字符),因此第一个备选方案\b\d*[\.]?\d*\b
实际上匹配任何单词边界位置。 / p>
您需要使其至少匹配1位数字,因此以下各项应可正常使用:
re.findall(r'\b(?:\d+(?:\.\d+)?|i)\b', line)
请参见regex demo
详细信息
\b
-单词边界(?:
-两种选择之一:
\d+
-1个以上数字(?:\.\d+)?
-.
和1个以上的数字的可选序列|
-或
i
-一个i
子字符串)
-替代组的结尾\b
-单词边界。