Python用正则表达式匹配实数/ float

标签 python regex

我不是最擅长的。

谁能告诉我这个模式是否可以在文字“each”出现之前返回一次出现的整数或小数?数字和字符串均由一个空格分隔。

for each in parsed:
            if measure_string.find(each)>-1:
                r = re.compile("([0-9]\.?[0-9]?) "+each)
                b = re.match(r,measure_string)
                if b:
                    return b, each

感谢您的浏览。

最佳答案

[0-9]\.?[0-9]?

第一个 [0-9] 将匹配一次出现的数字。 这 。?将匹配 0-1 个句点 [0-9]?将匹配 0-1 位数字。

因此,您的正则表达式将解析 1, 11, 1.1,但不会解析 1.11 或 11.1

如果您想解析以上所有内容,我建议您执行以下操作。

([0-9]+(?:\.[0-9]+)?)(?:\s)

[0-9]+ - 匹配 1 个或多个数字
\. - 第 1 场比赛
[0-9]*? - 匹配所有剩余的数字。
()? - 输入此正则表达式 0 或 1 次。

括号内的任何内容都将被捕获。如果您看到 (?:...) 中包含正则表达式,则它是非捕获正则表达式。但是如果 (?...) 包含在 (...) 中,它将被 (...) 正则表达式捕获...这有点困惑。但上面的代码应该只能捕获数字而不是空间。

关于Python用正则表达式匹配实数/ float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291565/

相关文章:

python - 在 numpy 中计算利率

python - 在 UI 上为 QLineEdit 的内容添加下划线

python - 在 django 的管理页面中为用户添加字段

javascript - 在 javascript 中使用 C# 正则表达式

python - 快速检测或模拟 WSAECONNREFUSED

Python:优化删除在 numpy 数组中未对齐的元素

java - 包含单词但不包含其前面的特定单词

java - 可以包含字母数字字符但不能包含 | 以外的任何内容的正则表达式, - 和空间

regex - 提取字符串中两个符号之间的所有内容

Java正则表达式仅匹配不带协议(protocol)和www的URL