Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 Regex将单词绑定实例与';dot';在…内_Python_Regex - Fatal编程技术网

Python Regex将单词绑定实例与';dot';在…内

Python Regex将单词绑定实例与';dot';在…内,python,regex,Python,Regex,希望这个问题是可以理解的。 我想做的是匹配python语法中构成数字(int和float)的任何内容。例如,我想匹配表单上的所有内容(包括点): 我尝试的解决办法是 "\b\d+/.?\d*\b" …但这失败了。其思想是匹配以一个或多个数字(\d+)开头的任何序列,然后是一个可选点(/。?),然后是任意数量的数字(\d*),周围有单词边界。这将匹配上面指定的所有三种数字形式 单词边界很重要,因为我不想匹配中的数字 foo123 123foo a=123. foo_method(123., 7

希望这个问题是可以理解的。 我想做的是匹配python语法中构成数字(int和float)的任何内容。例如,我想匹配表单上的所有内容(包括点):

我尝试的解决办法是

"\b\d+/.?\d*\b"
…但这失败了。其思想是匹配以一个或多个数字(
\d+
)开头的任何序列,然后是一个可选点(
/。?
),然后是任意数量的数字(
\d*
),周围有单词边界。这将匹配上面指定的所有三种数字形式

单词边界很重要,因为我不想匹配中的数字

foo123
123foo
a=123.
foo_method(123., 789.1, 10)
并且想要匹配中的数字

foo123
123foo
a=123.
foo_method(123., 789.1, 10)
然而,问题是,最后一个单词边界在可选点之前被识别。这会阻止正则表达式匹配
123.
123.321
,而是匹配
123
312


我怎么可能做到这一点,而单词边界是不可能的?可以让程序将点视为单词字符吗?

浮点规范比这里介绍的要复杂一些

这与pythons的float规范相匹配,不过也有其他规范

r“[+-]?\d+\.?\d*([eE][+-]?\d+)”
如果你正在做一些相对简单的事情,你可以添加正面的lookaheads和lookbehinds,但是你可能想在解析更复杂的东西之前,先把你正在解析的东西按单词边界分开

这将是确保单词边界的版本:


r”(?无法重现您的问题。
re.findall(r“\b\d+\?\d*\b”,“foo\u方法(123.321,789.1,10)”)
返回
['123.321',789.1',10']
。您的整数/浮点语法中缺少了很多东西。以下都是有效的数字:
72147836470O1770B100110111 3 79228162514 0o377 0xdeadbeef 100_000_000_0000; 0b_1110_0101 3.14 10..001 1e100 3.14e-10 0e0 3.14_93
请参见。是的,
r“\b\d+\.\d*(!\w)”