Python 用正则表达式搜索double
是否有一个正则表达式可以匹配浮点数,但如果它是像15.01.2016这样的构造的一部分,则没有Python 用正则表达式搜索double,python,regex,Python,Regex,是否有一个正则表达式可以匹配浮点数,但如果它是像15.01.2016这样的构造的一部分,则没有 re.match(rex,s)如果s将成功 1.0A 1.B .1 对于s之类的 1.0.0 1.0.1 20.20.20.30 12345.657.345 编辑: 关键部分是约束的组合:“[0-9]*\.[0-9]*.”,而不是“[0-9]+\.[0-9]+(\.[0-9]+)+”您可以基于python中的环视使用此正则表达式: (?<![\d.])(?:\d*\.\d+|\d+\.\d*
re.match(rex,s)
如果s
将成功
1.0A
1.B
.1
对于s
之类的
1.0.0
1.0.1
20.20.20.30
12345.657.345
编辑:
关键部分是约束的组合:
“[0-9]*\.[0-9]*.
”,而不是“[0-9]+\.[0-9]+(\.[0-9]+)+”
您可以基于python中的环视使用此正则表达式:
(?<![\d.])(?:\d*\.\d+|\d+\.\d*)(?![\d.])
(?
(?![\d.])
是前瞻性断言,如果下一个字符是点或数字,则该断言将使匹配失败
(?如果前一个字符是点或数字,查找后断言是否会使匹配失败
以下解决方案还使用了anubhava提到的前向和后向。此外,它还考虑了负数、十的幂(也是负数)和整数(不带a.):
(?
如果您在lookabelind中添加了一些额外的字符(?您可以避免在随机字符组中或在单词末尾进行匹配(例如,如果您不希望与“python3”
匹配).我可以匹配double和类似xxx.xxx.xxx的东西。这两个约束的组合是个问题。您可以为此显示您的正则表达式吗?要回答您实际提出的问题:是的,有。但我支持Anton的评论。您可能希望特别参考帮助文件。此外,请检查文档中的前瞻性断言。您可以n使用\d
而不是[0-9]
这里有人在疯狂复制..这不是正常的浮点匹配。
(?<![\d.])-?(?:\d+\.?\d*|\d*\.\d+)([eE]-?\d+)?(?![.\d])