这是我尝试的:这似乎是'最接近' \[\S[a-zA-Z0-9]+@[0-8]+((\s[a-zA-Z]+=".+")+[\]]+)+
\[[a-zA-Z0-9]+@[0-8]+(\s[a-zA-Z]+=".+"(?=\])+)+
\[\S[a-zA-Z0-9]+@[0-8]+(\s[a-zA-Z]+=".+"(?=\])+)+
\[[^ ][a-zA-Z0-9]+@[0-8]+(\s[a-zA-Z]+=".+"(?=\])+)+
\[\S[a-zA-Z0-9]+@[0-8]+((\s[a-zA-Z]+=".+")+\S[\]]+)+
\[\S[a-zA-Z0-9]+@[0-8]+((\s[a-zA-Z]+=".+")+[\]]+)\S
(\[\S[a-zA-Z0-9]+@[0-8]+((\s[a-zA-Z]+=".+")+[\]]+)+\S)
但是我保留匹配] ...
(括号后的空格),基本上我应该只匹配满足[*@# something="value" ...]
的行,其中something=“value”可以重复。如果在同一行上有另一个括号,它应该作为一行匹配,括号之间没有空格... [*@# something="val"][*@# something="val"]
下面是我测试的数据:
invalid (do not match)
; should not match, space between ][
[Example1SDID@32473 iut="3" eventSource="Application" eventID="1011"] [example1gPriority@32473 class="high"]
; should not match, space after [ and/or ]
[ Example2aSDID@32473 iut="3" eventSource="Application" eventID="1011"][example2fPriority@32473 class="high"]
[Example2bSDID@32473 iut="3" eventSource="Application" eventID="1011"][ example2ePriority@32473 class="high"]
[Example2cSDID@32473 iut="3" eventSource="Application" eventID="1011" ][ example2dPriority@32473 class="high"]
[Example3SDID@32473 iut="3" eventSource="Application" eventID="1011"][example2Priority@32473 nothing]
[Example2SDID@32473 iut="3" eventSource="Application" eventID="1011"][example2Priority@32473 class="high" ]
[Example2SDID@32473 iut="3" eventSource="Application" eventID="1011"][example2Priority@32473 class="high" ]
[this@that]
[example2Priority@32473 nothing]
[example4SDID@32473 iut="3" eventSource="Application" eventID="1011" ]
[asldkf;asd;fjas;dfj;asdjkf;asjkdffkdk]
[asdfas;dfjasdf
dfdss]
valid (match)
[example4SDID@32473 iut="3" eventSource="Application" eventID="1011"]
[example5SDID@32473 iut="3"]
[example6SDID@32473 iut="3" eventSource="Application" eventID="1011"][example6Priority@32473 class="high"]
1条答案
按热度按时间aelbi1ox1#
如果不需要部分匹配,可以使用
^
和$
锚定模式为了避免在方括号
] [
和方括号[ ]
之间出现空格,您可以将整个部分[ ]
重复一次或多次,以便在方括号] [
和方括号[ ]
之间没有空格。然后使用取反的字符类从
"..."
进行匹配注意
\s
也可以匹配换行符。说明
^
字符串开头(?:
非捕获组(对于[...]
)\[
匹配[
[a-z0-9]+@[0-8]+
匹配1+字符a-z 0 -9@
1+数字0-8(?:
非捕获组(对于..=".."
)\s[a-zA-Z]+="[^"]*"
匹配一个空白字符,1+字符a-zA-Z=
,然后"..."
)+
关闭非捕获组并重复1+次]
按字面匹配)+
关闭外部非捕获组,并重复1+次$
字符串结束Regex demo
如果要在双引号之间允许转义双引号:
Regex demo