我有一些这样的数据:
disconnected, received disassoc: sending station leaving (8)
disconnected, 4-way handshake timeout
disconnected, too weak signal, signal strength -91
disconnected, registered to other interface
我想在没有数字和括号的情况下得到原因。
所以不包括任何(x)
,也不-xx
其中x是数字(在最后(
输出应为
received disassoc: sending station leaving
4-way handshake timeout
too weak signal, signal strength
registered to other interface
我想我需要一些看起来但不确定的东西。
这不起作用:
disconnected, (?<reason>.*)( -d+)?
原因仍将包括-91
这只给出带有 -xx 或 (x( 的行,缺少其余行
disconnected, (?<reason>.+(?=-d+|(d)))
这给出了所有行,但也将在原因中包含 -xx 和 (x(
disconnected, (?<reason>.+(?=-d+|(d))?)
PS-xx
和(x)
总是在末尾,因此可以使用锚$
您可以使用与可选的非捕获组进行交替,以匹配字符串末尾的两个选项。
该值位于命名的捕获组reason
中。
disconnected, (?<reason>.*?)(?:(d+)| -d+)?$
在部分
disconnected,
匹配已断开连接,并有一个空格(?<reason>.*?)
命名捕获组reason
,尽可能匹配任何字符(?:
非捕获组(d+)
括号之间匹配 1+ 位数字|
或-d+
匹配空格-
和 1+ 位数字
)?
关闭组并设为可选$
字符串结尾
正则表达式演示