这是我的字符串:
2015-12-07T14:05:14 + 02:00 1.1.1.1< 13> 1 2015-12-07T14:05:13 + 02:00 my_server - - - - 2.2.2.2
我正在尝试捕获“1.1.1.1”,“my_server”和“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。有人可以帮助我吗?
答案 0 :(得分:2)
您可以通过在右括号后添加(someregex)?
来使任何捕获组可选(更精确:匹配零次或一次)。 E.g。
{{1}}
为您应该捕获的群组执行此操作&#34; 1.1.1.1&#34;和&#34; my_server&#34;。