正则表达式提取方括号之间的文本以及方括号中的最后一个字符串

问题描述 投票:0回答:1

我是正则表达式的新手,正在尝试为下面的字符串编写正则表达式。

[1] [2] [3] [] [5[any]] my text

我想要类似的东西

1
2
3

5[any]
my text

我已经尝试过

/\[(.*?)\]/g
,但它不适用于内括号和括号外的最后一个单词

https://regex101.com/r/NYvxMC/2

regex
1个回答
0
投票

尝试:

((?<=\[)(?:[^\[\]]|\[[^\[\]]+\])*(?=\])|(?<=\s)[\w\h]+$)

参见:regex101


说明

  • ( ... )
    :将结果捕获到组 1:
    • (?<=\[) ... (?=\])
      :在括号之间:
    • (?: ... )*
      :匹配0次或多次:
      • [^\[\]]
        :非括号
    • |
      :或
      • \[ ... \]
        :括号中带有
      • [^\[\]]+
        :中间无括号
  • |
    :或末尾的话:
    • (?<=\s)
      :检查前面是否有空格
    • [\w\h]+
      :匹配单词字符和水平空格
© www.soinside.com 2019 - 2024. All rights reserved.