我不是最擅长的。
谁能告诉我这个模式是否可以在文字“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/