我想写一个正则表达式脚本来匹配以下两个样本:
a/b/c
a1/a2/b/c
(注意:a,a1,a2,b,c
都是正整数)。
我面临的挑战是我需要能够捕获每个变量的值。
我试过像(\d+|(\d+\/\d+))\/\d+\/\d+
这样的东西。但|
计算器似乎是一个包容性的,而不是排他性的。
我有什么方法可以写独家或?
我也对其他解决方案持开放态度。
谢谢!
答案 0 :(得分:0)
试试这个:(?:sth)
。
这里第二组是可选匹配。请注意,我还使用了非捕获组1/2/3/4
,它不计入组。
例如,对于1
,这些组是:
第1组2
第2组3
第3组4
第4组1/3/4
对于1
,这些群组是:
第1组3
第3组4
第4组f = x**2 + 1
答案 1 :(得分:0)
您尝试捕获至少3个数字,以/
分隔,加上可能是另一个/
和数字。
所以直观的正则表达式是:
(\d+)\/(\d+)\/(\d+)(?:\/(\d+))?
“尾巴”(最终/
和数字)是最终非捕获组的内容。
?
之后声明它是可选的。