【发布时间】:2015-04-30 00:01:47
【问题描述】:
我一直在尝试使用正则表达式从文本中检索百分比。遗憾的是,使用 .sub 并不能检索所有匹配项。
data = "Tho grades of the two students improved by 5.2% and 6.2%."
re_1 = re.compile(r"\b(\d+\.)?\d+(%|(\spercent))")
data = re.sub(re_1, "__PERCENTAGE__", data, re.I)
我正在尝试检索以下内容:“5%”、“20.2%”、“5%”、“5.2%”。 作为匹配的一部分的单词百分比和百分比符号很好,但我怀疑问题来自重叠。输入上述数据时,当前输出为:
"The grades of the two students improved by __PERCENTAGE__ and 6.2%."
关于如何确保两个百分比都匹配的任何提示? 非常感谢。
PS:可能是相关的,我使用的是 Python 3
【问题讨论】:
-
您似乎没有使用
g标志来替换字符串中的所有匹配项。 -
对我来说很好用!
-
顺便说一句,最好写
\d+(?:\.\d+)?而不是(?:\d+\.)?\d+,因为即使没有小数点,左侧的所有数字也会一劳永逸地匹配。当没有小数点时,该组立即失败。 -
看起来这行得通。 regexr.com/3atik
标签: regex python-3.x