REGEXP,在模式后搜索字符串

REGEXP, searching string after pattern

我有这个数据:

Turning on API signature validation for service : PGL
Turning off API signature validation for service : PLATFORM
Turning off API signature validation for service : WEBWORKS
Turning on API signature validation for service : TIMER_SINK
Turning on API signature validation for service : MESSAGING
Turning on API signature validation for service : EMAIL
Turning off API signature validation for service : USER_SECURITY
Initializing MDM  for :USER_SECURITY
<MDM/>

我想在服务后捕获一个字符串: 我设法做到了:service.:.\K\w+

但是: 早些时候我尝试用不同的方式来做到这一点 service:\s* ([^\n\r]*) 但它 returns 我对服务的价值。 我从这篇文章中得到了这种方法 Regex to get the words after matching string 并且没有更大的效果。

谁能给我解释一下这个模式 ([\n\r].*Object Name:\s*([^\n\r]*))

更新:您可以使用以下正则表达式:

(?<=:\s).*

Demo and Explaination

[\n\r].*Object Name:\s*([^\n\r]*)

[\n\r] -> 匹配行尾

.* -> 匹配任意字符N次

Object Name: -> 匹配 "Object Name:"

\s* -> 配N白spaces

[^\n\r]* -> 除换行外任意字符,N次

() 这样的括号定义了匹配组,所以在许多 API 中你会使用这样的东西:

matchresult.at(0) = 整场比赛

matchresult.at(1) = 这就是你想要的,即匹配 [^\n\r]*

的字符

所以最后一个白色space("Object Name:"之后的最后一个白色space)和行尾之间的所有字符。

[\n\r].*Object Name:\s*([^\n\r]*)

让我们分解一下:

[\n\r] 这匹配新行。 \n\r 都可以在不同的情况下匹配新行。有时新行将包括它们:\r\n[\n\r] 仅匹配其中一个,因为方括号后没有量词。

. - 匹配除了新行之外的所有内容。 * 表示它将匹配零次到无限次。默认情况下,* 是贪婪的 - 即,它将匹配尽可能多的次数。

Object Name: - 按字面匹配 Object Name: - 包括 :.

\s 匹配每个白色 space 字符 - 包括 space、制表符、换行符等。* - 与之前相同 - 零到无限次,贪心。

([^\n\r]*) - 因为这是在括号中,所以这将是 "captured",即这是此正则表达式中的第一个也是唯一的捕获组。这意味着如果您想稍后在替换中使用它,您可以使用 </code> 访问它。 </p> <p><code>[] - 方括号用于列出允许的字符。在这种情况下,因为我们有特殊字符 ^ 里面,这将是一个不允许的字符列表。所以 [^\n\r]* 意味着它将匹配除新行之外的所有内容 - 零到无限次。与 .* 表达式的区别仅在于启用多行搜索的情况下,其中 . 也可以匹配新行。