Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用正则表达式搜索double_Python_Regex - Fatal编程技术网

Python 用正则表达式搜索double

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*

是否有一个正则表达式可以匹配浮点数,但如果它是像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*)(?![\d.])
(?

  • (?![\d.])
    是前瞻性断言,如果下一个字符是点或数字,则该断言将使匹配失败
  • (?如果前一个字符是点或数字,查找后断言是否会使匹配失败

以下解决方案还使用了anubhava提到的前向和后向。此外,它还考虑了负数、十的幂(也是负数)和整数(不带a.):

(?

如果您在lookabelind
中添加了一些额外的字符(?您可以避免在随机字符组中或在单词末尾进行匹配(例如,如果您不希望与
“python3”
匹配).

我可以匹配double和类似xxx.xxx.xxx的东西。这两个约束的组合是个问题。您可以为此显示您的正则表达式吗?要回答您实际提出的问题:是的,有。但我支持Anton的评论。您可能希望特别参考帮助文件。此外,请检查文档中的前瞻性断言。您可以n使用
\d
而不是
[0-9]
这里有人在疯狂复制..这不是正常的浮点匹配。
(?<![\d.])-?(?:\d+\.?\d*|\d*\.\d+)([eE]-?\d+)?(?![.\d])