2
這是我的字符串:如何捕捉多個可選組
2015-12-07T14:05:14 + 02:00 1.1.1.1 < 13> 1 2015-12-07T14:05:13+ 02:00 我的_服務器 - - - - 2.2.2.2
我試圖捕捉 「1.1.1.1」, 「我的_服務器」 和 「2.2.2.2」。不過,我需要「1.1.1.1」和「my_server」部分應該是可選的。我寫了一些正則表達式,當我的測試字符串與上面一樣時,它確實匹配了所有東西。但它不匹配時,我的測試字符串是這樣的:
2.2.2.2
因此,這裏是我的正則表達式:
(?:(?P<server_ip>[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}).*?(?:(?P<server_name>\S*?)
- - - -)).*?(?P<remote_ip>[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})
我測試正則表達式here。有人可以幫我嗎?
爲什麼不通過在他們後面添加一個'?'使捕獲組成爲可選的可選組件? – timgeb
如果它們是可選的,輸入字符串是什麼樣的? –
@timgeb愚蠢的我!我確實使你的工作方式像[this](http://bit.ly/1YYs8B8)。如果你回答,我可以解決這個問題。 – gunererd