【问题标题】:Problem of Regular expression double brackets正则表达式双括号的问题
【发布时间】:2020-11-04 03:20:26
【问题描述】:

我有这个正则表达式:(\[.*?\]) 用于查找模式 [data1],[data2],[data3],并且有效,但我发现了一个不起作用的情况:[*this bracket have a other bracket[]]

我正在寻找解决方案,如果括号中包含内括号,则识别出错。

这是一个python代码

tags = re.findall('\[.*?\]', log_string) 
  • 这是目标日志

[时间戳:2020-11-4 11:22:55] [事件:断点命中]

=> 结果:[TimeStamp: 2020-11-4 11:22:55],[Event: Break Point Hit]

[时间戳:2020-11-4 12:24:18] [事件:ds:[eax+0xFCA], cx]

=> 结果:[时间戳:2020-11-4 12:24:18],[事件:ds:[eax+0xFCA] (Event的',cs'缺失)

This is a normaly work case.

This is an error case.

请给我一些建议。

【问题讨论】:

  • 请将代码 sn-ps 发布为格式为代码的纯文本,而不是代码图像的链接。

标签: regex parsing


【解决方案1】:

如果内括号的嵌套深度限制为1:

\[(?:\[.*?]|.)*?]

live demo

这可以通过选择使用外部括号内的整个模式 [...] 来实现,或者如果没有找到这样的内部组,则只使用 .

] 的不必要的分组括号和不必要的转义已被删除。


或者如果您需要创建组 1:

(\[(?:\[.*?]|.)*?])

live demo

【讨论】:

  • 非常感谢!!太棒了。你是天使。
猜你喜欢
  • 2016-07-26
  • 2015-10-13
  • 1970-01-01
  • 2023-01-11
  • 2021-03-12
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多