正则表达式匹配重复模式的一个实例

时间:2015-04-28 20:29:21

标签: ruby regex grok logstash-grok

鉴于以下正则表达式

/(500 Internal Server Error)/

我们如何在一个具有相同匹配重复次数的字符串中仅匹配此模式的第一次出现?

例如:

Match 1
1.  500 Internal Server Error
Match 2
1.  500 Internal Server Error
Match 3
1.  500 Internal Server Error

我们如何得到1.作为我们唯一的答案?

匹配的示例文本如下(有意一个大字符串)

[SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection]     Receiving response: HTTP/1.1 500 Internal Server Error12:09:26,638 INFO [SoapUIProTestCaseRunner] Assertion [Match content of [question]] has status VALID12:09:26,638 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Connection 0.0.0.0:41494<->23.6.55.1:80 shut down12:09:26,638 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Connection 0.0.0.0:41494<->23.6.55.1:80 closed12:09:26,638 INFO [SoapUIProTestCaseRunner] Finished running SoapUI testcase [Test_fieldsParameter], time taken: 384ms, status: FINISHED12:09:26,640 INFO [SoapUIProTestCaseRunner] Assertion [Match content of [errorCode]] has status VALID12:09:26,641 INFO [SoapUIProTestCaseRunner] Assertion [Match content of [message]] has status VALID12:09:26,641 INFO [SoapUIProTestCaseRunner] Assertion [Valid HTTP Status Codes] has status VALID12:09:26,641 INFO [SoapUIProTestCaseRunner] running step [OtherSortBy]12:09:26,643 DEBUG [HttpClientSupport$SoapUIHttpClient] Stale connection check12:09:26,645 DEBUG [HttpClientSupport$SoapUIHttpClient] Attempt 1 to execute request12:09:26,646 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Sending request: GET /api/review/v1/questions?prodId=570043&_sortby=other HTTP/1.112:09:26,666 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Receiving response: HTTP/1.1 500 Internal Server Error12:09:26,667 DEBUG [SoapUIMultiThreadedHttpConnectionManager$SoapUIDefaultClientConnection] Connection 0.0.0.0:41475<->23.6.55.1:80 shut down12:09:26,667 DEBUG 

1 个答案:

答案 0 :(得分:0)

请看一下,这证明捕获的字符串是第一个:

str = "Match 1\n1.  500 Internal Server Error\nMatch 2\n1.  500 Internal Server Error\nMatch 3\n1.  500 Internal Server Error"
re = /(500 Internal Server Error)/
mdata = re.match(str)
puts mdata.begin(1)
puts mdata

输出sample program证明它是第一次出现(输入字符串中12的索引):

12                                                                                                                                                                  
500 Internal Server Error