Python 匹配打印页面及其范围的正则表达式
Python Regular expression to match printing pages and their range
我有这个匹配任何打印页面规范的正则表达式(例如:6、1-6、6:4、10-20/3)
^([1-9]\d*)((?<=\d)[-]|[:]?)((?<=-|:)?[1-9]\d*)?(?:(?<=)([/]?))([1-9]\d*)?$
我有它,所以它当前匹配:例如:2048-4096/100,15:10/3
但是,我的正则表达式也匹配 5/3 当 / 应该只跟在冒号或破折号和一些数字之后,比如2048-4096/100
在上面表达式的空正后视中,我已经尝试过:
(?:(?<=[:|-]\d)([/]?))
但这会导致我所有的测试都失败,导致没有匹配项。我也试过 (?:(?<=[:|-]\d*)([/]?))
但在回顾中不允许使用量词。
我可以在空的正后视中放入什么来制作它,以便它检查 : 或 - 和数字是在 /?
之前
您可以使用
^([1-9]\d*)(?:([-:])([1-9]\d*)(?:(/)([1-9]\d*))?)?$
见regex demo。 详情:
^
- 字符串开头
([1-9]\d*)
- 第 1 组:一个非零数字,然后是零个或多个数字
(?:([-:])([1-9]\d*)(?:(/)([1-9]\d*))?)?
- 可选出现
([-:])
- 第 2 组:-
或 :
([1-9]\d*)
- 第 3 组:一个非零数字,然后是零个或多个数字
(?:(/)([1-9]\d*))?
- 可选出现
(/)
- 第 4 组:/
([1-9]\d*)
- 第 5 组:一个非零数字,然后是零个或多个数字
$
- 字符串结尾。
我保持所有组不变,但至少 (/)
组是多余的,因为模式固定为 /
。
我有这个匹配任何打印页面规范的正则表达式(例如:6、1-6、6:4、10-20/3)
^([1-9]\d*)((?<=\d)[-]|[:]?)((?<=-|:)?[1-9]\d*)?(?:(?<=)([/]?))([1-9]\d*)?$
我有它,所以它当前匹配:例如:2048-4096/100,15:10/3
但是,我的正则表达式也匹配 5/3 当 / 应该只跟在冒号或破折号和一些数字之后,比如2048-4096/100
在上面表达式的空正后视中,我已经尝试过:
(?:(?<=[:|-]\d)([/]?))
但这会导致我所有的测试都失败,导致没有匹配项。我也试过 (?:(?<=[:|-]\d*)([/]?))
但在回顾中不允许使用量词。
我可以在空的正后视中放入什么来制作它,以便它检查 : 或 - 和数字是在 /?
之前您可以使用
^([1-9]\d*)(?:([-:])([1-9]\d*)(?:(/)([1-9]\d*))?)?$
见regex demo。 详情:
^
- 字符串开头([1-9]\d*)
- 第 1 组:一个非零数字,然后是零个或多个数字(?:([-:])([1-9]\d*)(?:(/)([1-9]\d*))?)?
- 可选出现([-:])
- 第 2 组:-
或:
([1-9]\d*)
- 第 3 组:一个非零数字,然后是零个或多个数字(?:(/)([1-9]\d*))?
- 可选出现(/)
- 第 4 组:/
([1-9]\d*)
- 第 5 组:一个非零数字,然后是零个或多个数字
$
- 字符串结尾。
我保持所有组不变,但至少 (/)
组是多余的,因为模式固定为 /
。