想要正则表达的帮助

时间:2014-02-27 11:05:26

标签: regex

我有一个像'/whatever/whatver/whatever/v{int}'这样的字符串 如字符串所示,该字符串由一些前缀'/whaterver'组成,该字符串具有前缀与否,两者都可以,最后一部分是/v{int} 我写了一个正则表达式(^[/][a-zA-Z]+)*/v[0-9]+(^[/][a-zA-Z]+)*表示前缀可以显示与否,/v[0-9]+表示匹配最后一部分。

我猜表达式可以完全匹配字符串,但事实并非如此。

任何人都可以帮助我吗?

2 个答案:

答案 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