首页 > 解决方案 > 匹配数字或 100% 但不匹配 99% 的正则表达式

问题描述

我正在尝试编写一个匹配两组数字或 100% 用“x”字符分隔的正则表达式。像(第一组)x(第二组)。并且“100%”应该按原样捕获,带有百分号。百分号只允许在 100 之后。

例如:

100x100 - OK
100%x100 - OK
99x99 - OK
99%x100 - not OK
99x99% - not OK

这是我的方法:

s = '100%x99%' # this should be failed
match = re.match(r'(100%|\d+(?!%))x(100%|\d+(?!%))', s)
if match:
  x = match.group(1)
  y = match.group(2)

我希望 y 为 none 并且 match 会失败,因为 '99%' 是被禁止的。但是使用我的正则表达式,我得到了x = 100%and y = 9

如何修复我的正则表达式?

标签: pythonregex

解决方案


这会起作用:(\d+x\d+$)|(100%x\d+$)|(\d+x100%)

这包括100%可能出现在之后的情况x,所以如果不是这种情况,只需删除最后一组。


推荐阅读