通过正则表达式

时间:2018-08-02 03:55:21

标签: regex

我想编写一个正则表达式从路径中获取路径信息。

输入行将是:

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)

但是我没有得到我期望的结果。我的正则表达式有什么问题?谢谢!

1 个答案:

答案 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-单词边界。