2013-02-01 65 views
0

我有需要與正則表達式來解析兩個可能的輸入:返回值條件

192.168.1.1:80 [172.16.1.1:8080]

192.168.1.1:80 [172.16.1.1]

如果:8080是本我想返回8080,但如果不是,我想返回80.

這可能嗎?

感謝

+0

你有什麼嘗試......你使用的是哪種語言......這兩個輸入是在單個字符串中還是它們是分開的...... – Anirudha

回答

0

你可以用積極的回顧後,負先行做..

(?<=:)\d+(?!.*:\d+) 

Altenatively可以使用

.*:(\d+) 

組1捕捉你想要

什麼
+0

你的第一條語句是無效的。這很可能是我使用的軟件的一個問題。然而,你的第二個建議可行,我只發佈了一部分輸入。會有另一個ip:port的實例。對不起這是我的錯。所以「真實」的輸入會是這樣的:192.168.1.1:80 [172.16.1.1:8080] - > 10.100.100.1:443 – user1760089

+0

順便說一句 - 我找到了一種方法來在我使用的軟件中使用兩個正則表達式,所以這個問題是沒有意義的。不過,我仍然有興趣知道這種說法是否可行 – user1760089