java - 显式匹配模式 [] 或 [][] 的正则表达式。?

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

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

我已经编写了一个匹配的正则表达式

[][] ,并且

[]明确地,但是

问题是,在第二种情况下,我的 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/

相关文章:

python - 需要此正则表达式的帮助

java - 计算大写字母、小写字母、空格和其余(数字等)

java - getLocalSocketAddress() 和 getRemoteSocketAddress() 未返回正确的值

java - Testdome - DecoratorStream Java

javascript - contenteditable div 中的 n gram 突出显示

javascript - 拒绝绝对无效的电子邮件地址的最不坏的正则表达式是什么?

regex - 否定包含三个部分的复杂正则表达式

java - 我可以同时拥有 JDO 和 JPA 注释吗?

c++ - 在QML中将regExp创建到textField

java - 为什么这个正则表达式不返回第二个单词