我有一个正则表达式来捕获字符串的特定部分
[Pp]rocess[\s]+(?<proc>[\w-]*|[\/\w-]*)\([\d]*\) killed by signal (?<signame>[\w\s]*)-(?<signum>[\d]+)
eg:Process tivosh(1426) killed by signal Hangup-1
输出: proc - &gt; tivosh
signame - &gt;挂机
signum - &gt; 1
在某些情况下,这个标志就是comibination&#34; Trace / breakpoint trap&#34;
eg: process uploader(2404) killed by signal Trace/breakpoint trap-5
请告诉我,如何捕捉单词+非单词字符?
答案 0 :(得分:0)
[\w\s]*
仅匹配零个或多个单词或空白字符。将更多允许的字符添加到类中,或使用惰性点模式 - .*?
:
[Pp]rocess\s+(?<proc>.*?)\(\d*\) killed by signal (?<signame>.*?)-(?<signum>\d+)
^^^ ^^^
请参阅regex demo
延迟点模式将匹配除换行符之外的尽可能少的字符,直到第一个-
后跟一个或多个数字(即-(?<signum>\d+)
的第一个匹配项)。与(?<proc>.*?)
相同 - 除了第一个(<digits_here_0_or_more>)
之前的换行符之外,它将匹配任何字符。
此外,使用字符类(括号)包装单个速记字符类没有意义:[\s]*
= \s*
。
答案 1 :(得分:0)
这是捕获任何单词,空格,无字符的方法。
[\w\s\W]