这是我的字符串:
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
我正在 try catch “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 .有人可以帮帮我吗?
您可以通过简单地在右括号后添加 ?
使您的任何捕获组成为可选的(更精确:匹配零次或一次)。例如
(someregex)?
为应该捕获“1.1.1.1”和“my_server”的组执行此操作。
我是一名优秀的程序员,十分优秀!