在正则表达式中使用定义的子模式时,它不会选择最佳匹配,而是停在第一个匹配上。我忘了添加一些标记吗?
正则表达式:
表达式无法匹配: 但是字符串
如果我将'or'条件更改为
正则表达式:
(?<minutes>[0-9]|[1-5][0-9]):(?&minutes);
测试字符串:47:24;
。表达式无法匹配: 但是字符串
47:2;
被正确匹配:
。如果我将'or'条件更改为
[1-5][0-9]|[0-9]
,则正则表达式(?<minutes>[1-5][0-9]|[0-9]):(?&minutes);
就可以正常工作。是否有其他方法使字符串“47:24;”匹配而无需反转“或”条件?
[1-5]
中使用?
:(?<minutes>[1-5]?[0-9]):(?&minutes);
。或者你想保留交替吗? - Wiktor Stribiżew[0-5]
扩展到允许以 0 开头的两位数分钟。 - Thomas Ayoub