这个问题困扰我很久了。这是我要搜索的字符串的基础:
aa.bb.cc
每个标记(由'.'标记)可以在零个或多个数组索引组之后/后跟:
例如aa[1].bb[2][3].cc
如果我的文本包含一个字符串,其中包含带有可选数组索引的确切标记数,我想匹配。但是,如果我要搜索的文本包含一个额外的“。”和 token ,我不想要任何匹配:
例如 aa[1].bb[2].cc.dd
我很难找到一个模式,其中包含带有负先行的可选数组索引组 - 我一直在使用 (?!\.) - 作为模式。这是我尝试过的模式之一:
((\w+)([\[\]\w]+)*\.(\w+)([\[\]\w]+)*\.(\w+)([\[\]\w]+)*)(?!\.)
如果我的搜索字符串是aa[1].bb[2][3].cc 组如下:
- aa[1].bb[2][3].cc
- 一个
- [1]
- bb
- [2][3]
- 抄送
- 没有
但是,如果我的搜索字符串包含一个标记,甚至只是“.”,如上所述,我希望整个匹配失败。但是,搜索会返回相同的匹配组。
请您参考如下方法:
