匹配以下模式的常见正则表达式是什么?
Gig1/2
Gig1/2/3
我有以下模式匹配字符串Gig1 / 1和Gig1 / 1/1。 但问题是,Gig1 / 1/1与两种模式都匹配。请让我知道,如何避免这种情况?
Pat1:“。*?(\ d +)/(\ d +)”
Pat2:“。*?(\ d +)/(\ d +)/(\ d +)”
答案 0 :(得分:2)
您需要在正则表达式中添加开始和结束锚点:
Pat1:^"\w+(\d+)/(\d+)"$
Pat2:^"\w+(\d+)/(\d+)/(\d+)"$
答案 1 :(得分:2)
Pat1:^\p{L}+(\d+)/(\d+)$
Pat2:^\p{L}+(\d+)/(\d+)/(\d+)$
如果您只是将^.*?(\d+)/(\d+)$
应用于Gig1/2/3
,.*?
部分将匹配Gig1/
,因为该点可以匹配任何字符(无论是否懒惰都无差异)。
您需要更加具体地了解数字之前的内容。我假设是字母,所以我用\p{L}
表示“任意(Unicode)字母”。
在将这些正则表达式粘贴到Java字符串中之前,不要忘记将反斜杠加倍。