正则表达式以匹配带有'。'的单词限制实例吗?

问题描述 投票:0回答:1

希望这个问题是可以理解的。我想做的是匹配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,而是匹配123312

我怎么可能用不可能的单词边界来做到这一点?可以使程序将点感知为文字字符吗?

python regex digits word-boundary python-regex
1个回答
1
投票

float规范比您在此处介绍的要复杂一些。

这与pythons浮动规范匹配,尽管也有其他规范。

r"[+-]?\d+\.?\d*([eE][+-]?\d+)?"

如果您做的是相对简单的事情,则可以添加正向查找和后退查找,但是在解析更复杂的内容之前,您可能希望将所有要解析的内容按字边界划分

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

r"(?<=\b)[+-]?\d+\.?\d*([eE][+-]?\d+)?(?=\b)"
© www.soinside.com 2019 - 2024. All rights reserved.