希望这个问题是可以理解的。我想做的是匹配python语法中构成数字(int和float)的任何内容。例如,我要匹配表单上的所有内容(包括点):
123
123.321
123.
我尝试的解决方法是
"\b\d+/.?\d*\b"
...但是失败了。想法是匹配以一个或多个数字(\d+
)开头,后跟一个可选的点(/.?
),然后是任意数量的数字(\d*
)并带有单词边界的任何序列。这将匹配上面指定的所有三种数字形式。
字边界很重要,因为我不想要匹配其中的数字
foo123
123foo
并且要匹配其中的数字
a=123.
foo_method(123., 789.1, 10)
但是问题是最后一个单词的边界在可选点之前被识别。这样可以防止正则表达式匹配123.
和123.321
,而是匹配123
和312
。
我怎么可能用不可能的单词边界来做到这一点?可以使程序将点感知为文字字符吗?
float规范比您在此处介绍的要复杂一些。
这与pythons浮动规范匹配,尽管也有其他规范。
r"[+-]?\d+\.?\d*([eE][+-]?\d+)?"
如果您做的是相对简单的事情,则可以添加正向查找和后退查找,但是在解析更复杂的内容之前,您可能希望将所有要解析的内容按字边界划分
这将是确保单词边界的版本:
r"(?<=\b)[+-]?\d+\.?\d*([eE][+-]?\d+)?(?=\b)"