【问题标题】:Regex match for a character without previous character没有前一个字符的字符的正则表达式匹配
【发布时间】:2014-09-17 04:12:21
【问题描述】:

我有以下字符串:

"location-string:location-string:location-C?:\string"

我想分成以下三个字符串:

location-stringlocation-stringlocation-C?:\string

使用String.split(regex)时,正则表达式应该是什么?

基本上,我想拆分冒号“:”字符,但前面有“?”的字符除外角色!

提前致谢, 下午。

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您可以使用否定的lookbehind。它匹配前面没有?的冒号

    (?<!\?):
    

    Java 正则表达式是,

    "(?<!\\?):"
    

    DEMO

    【讨论】:

      【解决方案2】:

      您可以使用split() 限制。

      public static void main(String[] args) {
          String s = "location-string:location-string:location-C?:\\string";
          System.out.println(Arrays.toString(s.split(":", 3))); 
      }
      

      O/P:

      [location-string, location-string, location-C?:\string]
      

      【讨论】:

      • 最遗憾的是,这是基于仅发生在 非常 特殊位置(第 3 个和最后一个)的特殊情况 (?:)。考虑到“我想在冒号 ':' 字符上拆分,但前面有 ' 的字符除外,你确定这是一个很好的答案吗?”字符”?
      • 双反斜杠作为注释指示符?
      • @laune - 是的。这与给定的字符串非常紧密地耦合在一起。我只是指出,这也可以这样做。
      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多