我正在为用于基准测试实验的脚本语言编写解析器。我在其中引入了一维和二维数组的概念,并尝试编写正则表达式以显式匹配 []
或 的出现>[][]
在语句中,并相应地在内部处理数组值的存储和检索。
我已经编写了一个匹配的正则表达式
[][] ,并且
[]明确地,但是
问题是,在第二种情况下,我的 REGEX 依赖于在匹配[]
之前匹配任何编程语言中的变量定义模式。
有人可以建议另一种编写 2nd REGEX 的方法吗?它独立于匹配之前的变量模式,并且应该只匹配 []
类型的单个出现?
例如:
第二个正则表达式不应匹配字符串中的任何子字符串:
数组1[123]
[345]
相反,它应该仅匹配
array2[12]
我试过[]但是,它是部分正确的,因为它也匹配
数组[1][2]
前缀[23423][23435]
,我不希望它这样做。
有人可以帮忙吗,如何解决这个问题?
最佳答案
您可以使用
(?<!])\[\d+](?!\[)
请参阅regex demo .
详细信息
-
(?<!])
- 如果存在]
,则匹配失败的负向后查找紧邻当前位置的左侧 -
\[
- 一个[
-
\d+
- 1+ 位数字 -
]
- 一个]
字符 -
(?!\[)
- 如果存在[
,则匹配失败的负前瞻紧邻当前位置的右侧。
关于java - 显式匹配模式 [] 或 [][] 的正则表达式。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49826226/