我想构建一个正则表达式,以捕获字符串中的所有模式,在字符串中,在度量单位(ml,mg,kg等)之前存在整数或浮点数。我当前的正则表达式仅考虑整数,并且在存在空格时会中断。我想在我的代码中处理这些。

p = re.compile('[0-9](?:mg|kg|ml|q.s.|ui|M|g|µg)')
x = '0.9mg is the approximate dosage'
z = p.findall(x)
print(z)

对于小数点无效,并且在有空格时也会中断。

预期要捕获的模式是:
Examples: 0.9 mg, 9 mg, 9mg, 0.9mg

关于此的任何帮助

在代码中使用正则表达式:
mg = []
newregex = r"[0-9\.\s]+(?:mg|kg|ml|q.s.|ui|M|g|µg)"
for s in zz:
    for e in extracteddata:
        v = re.search(newregex,extracteddata,flags=re.IGNORECASE|re.MULTILINE)
        if v:
            mg.append(v.group(0))

最佳答案

您可以尝试以下操作:

([.\d]+)\s*(?:mg|kg|ml|q.s.|ui|M|g|µg)

Try it online.

10-06 03:57