使用正则表达式获取一些数据,但不是全部数据



我有一些这样的数据:

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+ 位数字
  • )?关闭组并设为可选
  • $字符串结尾

正则表达式演示

相关内容

最新更新