我正在编写一个用于基准测试实验的脚本语言的解析器。我在其中引入了一维和二维数组的概念,并尝试编写正则表达式,以明确匹配[]
或[][]
的出现一个语句,并相应地在内部处理数组值的存储和检索。
我写了一个匹配
的REGEX[][]和
明确地[],但
问题是,在第二种情况下,我的REGEX依赖于在匹配[]
之前在任何编程语言中匹配变量定义的模式。
有没有人可以建议另一种为第二种方法编写REGEX的方法,它与之前的变量模式匹配无关,只应匹配[]
类的单一事件?
例如:
第二个REGEX 不应匹配 STRING中的任何子字符串:
array1 [123]
[345]
相反,它应仅匹配
数组2 [12]
我尝试[]但是,它部分正确,因为它也匹配
阵列[1] [2]
前缀[23423] [23435]
,我不希望这样做。
有人可以帮忙,如何解决这个问题?
答案 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)
<击> 试试这个
{{1}}击>
<击> 撞击>
答案 2 :(得分:-1)
可以试试这个。
[\[|\]]
匹配事件内的所有内容。