如何编写python表达式来过滤掉某些字符串

Ste*_*ang 2 python regex

有一个包含多个数字的字符串,例如:

12.03 5.897 7.10.74 0.103 12.05 6.4.1 8.98
Run Code Online (Sandbox Code Playgroud)

我想使用Python正则表达式仅输出那些只有的数字single dot (.),例如"12.03""5.897",而不是"7.10.74""6.4.1".

我知道这是一个没有正则表达式的微不足道的问题,我只想用正则表达式解决这个问题.但我真的无法弄清楚如何使用正则表达式来解决这个问题.有人能帮助我吗?

anu*_*ava 7

如果你想要一个纯正则表达式解决方案,那么使用lookarounds:

>>> s = "12.03 5.897 7.10.74 0.103 12.05 6.4.1 8.98"
>>> print re.findall(r'(?<!\.)\b\d+\.\d+\b(?!\.)', s)
['12.03', '5.897', '0.103', '12.05', '8.98']
Run Code Online (Sandbox Code Playgroud)

RegEx演示

  • (?<!\.) 当前一个char是DOT时断言失败是负面的看法.
  • (?!\.) 当下一个字符是DOT时,断言前瞻性来断言失败.
  • \b 是双边所需的字边界,以确保我们匹配完整的十进制数