python - 使用正则表达式从 python 中的文本中仅提取百分比信息

标签 python regex percentage

我正在尝试仅提取有效的百分比信息,并使用 Python 中的正则表达式从字符串中消除任何不正确的表示形式。该功能应该像这样工作, 对于,

0-100%  = TRUE
0.12% = TRUE
23.1245467% = TRUE
9999% = FALSE
8937.2435% = FALSE
7.% = FALSE

我检查了堆栈溢出中的一些解决方案,它们只提取了 0-100%。我尝试了以下解决方案,

('(\s100|[123456789][0-9]|[0-9])(\.\d+)+%')
'(\s100|\s\d{1,2})(\.\d+)+%'
'(\s100|\s\d[0-99])(\.\d+)+%'

所有这些都适用于除 0-99%(给出 FALSE)和 12411.23526%(给出 TRUE)之外的所有其他可能性。空格的原因是我只想提取两位数。

最佳答案

想通了。问题出在 '(\.\d+)+' 表达式中的 '+' 而它应该是 '(\.\d+)*' 。第一个表达式期望任何两位数的百分比值都具有小数值,而第二个表达式则没有。我的最终版本如下。

'\s(100|(\d{1,2}(\.\d+)*))%' 

对于句子开头的百分比值,您可以将 \s 替换为 $。此外,我的问题部分中的版本接受 100 的小数值,这是无效的百分比值。

关于python - 使用正则表达式从 python 中的文本中仅提取百分比信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532747/

相关文章:

java - 匹配除一个之外的所有字符

mysql - 查询以获取特定区域内居住的客户数量的百分比

html - 如何将 Div 放置在具有自动边距的容器外部并使其填充浏览器的其余宽度?

Python:对象构造函数调用自身

python - 使用 matplotlib 绘制图像颜色直方图

python - PhantomJS() 未在 pyCharm 中运行

css - 将 Div TOP 位置设置为浏览器宽度的百分比(按宽度定义高度位置)

python - 使用 win32COM 时创建新的 Python 对象

javascript - (?:x) character? 有什么意义

javascript - 包含 "not"的正则表达式不起作用