【发布时间】:2017-06-23 17:32:05
【问题描述】:
我正在寻找一个正则表达式来拆分句子中“点”上的 java 字符串,除非这些点在括号之间。 也就是说,在这个例句中:
word1.word2.word3[word4.word5[word6.word7]].word8
我只想拆分前两个和最后一个(就在“word8”之前)。
我设法得到了这个正则表达式:
\.(?![^\[]*?\])
但这还不够好,因为它还在单词 4 和 5 之间的点上分裂:-(
有解决这个特殊情况的想法吗?
【问题讨论】:
-
如果括号可以嵌套(看起来可以嵌套),则不能使用正则表达式来执行此操作;你必须使用某种解析器。
-
@arshajii :我不敢相信正则表达式不处理嵌套元素......难道没有某种负面回溯解决方案吗?
-
Java 正则表达式不支持递归。 PCRE/Boost/Onigmo 可以。
-
我认为您无法仅通过 one 正则表达式来解决您的模式。最好将您的模式分成两步或多步
标签: java regex regex-lookarounds