我有一个像'/whatever/whatver/whatever/v{int}'
这样的字符串
如字符串所示,该字符串由一些前缀'/whaterver'
组成,该字符串具有前缀与否,两者都可以,最后一部分是/v{int}
我写了一个正则表达式(^[/][a-zA-Z]+)*/v[0-9]+
,(^[/][a-zA-Z]+)*
表示前缀可以显示与否,/v[0-9]+
表示匹配最后一部分。
我猜表达式可以完全匹配字符串,但事实并非如此。
任何人都可以帮助我吗?
答案 0 :(得分:0)
首先,为什么否定/
字符?
其次,我可以看到你可以有多个前缀,所以你还要检查前缀的多个基数(参见我添加的*
通配符)。
此表达式([/][a-zA-Z]+)*/v[0-9]+
与您的输入匹配,并且还匹配没有前缀的输入。
修改强>
如果您想要保留行首标记(即使您想要完全匹配,它是多余的),您需要将其从重复块中排除(标有*
通配符),因为您不希望引擎在每个前缀中查找新的行开头。
^([/][a-zA-Z]+)*/v[0-9]+
答案 1 :(得分:0)
echo "/whatever/whatver/whatever/v1654" | grep -E '^/?([a-zA-Z]+/)+v[0-9]+$'
/whatever/whatver/whatever/v1654