我有一个这样的字符串
This:string:must~:be:split:when:previous:char:is:not~:this
我需要使用定界符“:”来拆分行,但前提是定界符之前的字符不是“~”
我现在有以下正则表达式:
String[] split = str.split(":(?<!~:)");
它有效,但由于我纯粹是通过反复试验得出的,所以我不相信这是最有效的方法。另外,这个函数会频繁地在大字符串上重复调用,所以性能确实要考虑在内。更有效的方法是什么?
最佳答案
一个稍微简单的方法是这样的:
(?<!~):
这样你就不会匹配 :
两次。不过,我怀疑您会发现性能有任何差异。不使用正则表达式也很简单,只需查找下一个冒号,并检查它前面的波浪号。
关于Java Regex 在拆分前检查前一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654366/