python - 匹配数字或 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
。
如何修复我的正则表达式?
解决方案
这会起作用:(\d+x\d+$)|(100%x\d+$)|(\d+x100%)
这包括100%
可能出现在之后的情况x
,所以如果不是这种情况,只需删除最后一组。
推荐阅读
- primes - 整数的初始因子数为 O(log(n))
- python - pycharm中的库导入问题
- laravel - 如何在 laravel 中使用增量函数
- docker - VS Code 容器远程扩展:无法获取远程环境
- three.js - THREE.js 在模型缩放而不是拉伸时使纹理重复
- r - data.frame - 对象不能被强制输入'double'
- mysql - MySql 分配一个选择
- docker-compose - Tomcat 不是用 docker compose 启动的
- javascript - 在 contenteditable div 中重新生成 innerHTML 后如何在单词中间设置插入符号位置
- ionic-framework - 在浏览器中提供 Ionic 3 应用程序的问题