用于显式匹配模式 [] 或 [][] 的正则表达式。?

Regular expression for matching patterns [] or [][] explicitly.?

我正在为用于基准测试实验的脚本语言编写解析器。我在其中引入了 1 维和 2 维数组的概念,并尝试编写正则表达式以显式匹配 of [] or [=11] =] 在语句中并相应地在内部处理数组值的存储和检索。

我写了一个匹配

的正则表达式

[][],以及

[] 明确,但是

问题是,在第二种情况下,我的 REGEX 依赖于在匹配之前匹配任何编程语言中的变量定义模式[]

谁能建议另一种为 2nd 编写 REGEX 的方法,它独立于匹配它之前的变量模式并且应该只匹配一次出现的 [] 种类?

例如:

第二个 REGEX 不应匹配 STRING 中的任何子字符串:

array1[123] [345]

相反,它应该只匹配

array2[12]

我试过 [] 但是,它部分正确,因为它也匹配

数组[1][2]

prefix[23423][23435] 我不想这样。

谁能帮忙,如何解决这个问题?

试试这个

(?<!\])(\[\d+\])(?=[^[])

说明

(?<!\]) - lookbehind for any character diferent from "[" (this also consumes the caracter so they won´t be on the match)

(\[\d+\]) - find digits surrounded by []

(?=[^[]) - lookahead for any character that isn't "[" (this won't be taken in the match)

examples

试试这个

(?<!\])(\[\d+\])(?>\s)

可以试试这个。

[\[|\]]

匹配出现的所有内容。

您可以使用

(?<!])\[\d+](?!\[)

参见regex demo

详情

  • (?<!]) - 如果在当前位置
  • 的左侧有一个 ],则匹配失败的负后视
  • \[ - [
  • \d+ - 1+ 位数
  • ] - 一个 ] 字符
  • (?!\[) - 如果当前位置右侧紧邻 [,则匹配失败的否定前瞻。