Java Regex 在拆分前检查前一个字符

标签 java regex

我有一个这样的字符串

This:string:must~:be:split:when:previous:char:is:not~:this

我需要使用定界符“:”来拆分行,但前提是定界符之前的字符不是“~”

我现在有以下正则表达式:

String[] split = str.split(":(?<!~:)");

它有效,但由于我纯粹是通过反复试验得出的,所以我不相信这是最有效的方法。另外,这个函数会频繁地在大字符串上重复调用,所以性能确实要考虑在内。更有效的方法是什么?

最佳答案

一个稍微简单的方法是这样的:

(?<!~):

这样你就不会匹配 : 两次。不过,我怀疑您会发现性能有任何差异。不使用正则表达式也很简单,只需查找下一个冒号,并检查它前面的波浪号。

关于Java Regex 在拆分前检查前一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654366/

相关文章:

java - 启动 Java 桌面应用程序并摆脱 Commander

java - 如何替换引号外的单词

regex - 修改包含给定字符串的文件的权限

python - 正则表达式仅捕获括号内第一次出现的情况

正则表达式精确匹配

java - UserTransaction.rollback 异常 HHH000451

java - 如何显示黑底白字?

java - Java 中的 inputstream inputstreamreader 阅读器

java - 确定 Indian Rummy 手牌是否获胜 - Java

Javascript 正则表达式仅使用 <li> 标记内的文本替换 <ul> 或 <ol>