正则表达式明确匹配模式[]或[] []。

时间:2018-04-13 23:07:38

标签: java regex regex-negation regex-lookarounds regex-group

我正在编写一个用于基准测试实验的脚本语言的解析器。我在其中引入了一维和二维数组的概念,并尝试编写正则表达式,以明确匹配[][][]出现一个语句,并相应地在内部处理数组值的存储和检索。

我写了一个匹配

的REGEX

[][]

明确地

[],但

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

有没有人可以建议另一种为第二种方法编写REGEX的方法,它与之前的变量模式匹配无关,只应匹配[]类的单一事件?

例如:

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

array1 [123] [345]

相反,它应仅匹配

数组2 [12]

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

阵列[1] [2]

前缀[23423] [23435] ,我不希望这样做。

有人可以帮忙,如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您可以使用

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

请参阅regex demo

<强>详情

  • (?<!]) - 如果当前位置左侧有],则会导致匹配失败的负面反馈
  • \[ - [
  • \d+ - 1+位数
  • ] - ]字符
  • (?!\[) - 如果当前位置右侧有[,则会导致匹配失败的否定前瞻。

答案 1 :(得分:-1)

试试这个

(?<!\]) - 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)

解释

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

FormData

<击> 试试这个

{{1}}

<击>

答案 2 :(得分:-1)

可以试试这个。

[\[|\]]

匹配事件内的所有内容。