有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中使用正则表达式更改匹配子字符串的前缀和后缀

我想(在Java中)在字符串中找到任何以sayaba开头,以sayaca结尾的子字符串,其中它们之间有一个或多个非空白字符

例如,“blingblangabablahacablingblang将找到子字符串abablahaca

然后我想替换这些子字符串中的每一个,将开始部分修改为b,将结束部分修改为ca,但保留内部的blah

例如“blingblangabablahacablingblang将更改为blingblangbblahcablingblang

有什么方法可以用String来实现吗。replaceAll()?原始字符串中有许多实例需要更改

谢谢你的帮助


共 (5) 个答案

  1. # 1 楼答案

    简单的if字符串有什么问题。startsWith()和string。endsWith()然后替换子字符串,然后开始和结束,然后重建新字符串

  2. # 2 楼答案

    你可以试试:

    myString.replaceAll("aba(\\w*?)aca", "b$1ca") // would also match abaaca, without blah in the middle
    

    或者

    myString.replaceAll("aba(\\w+?)aca", "b$1ca") // match onlu if there is a char between aba and aca
    
  3. # 3 楼答案

    我不知道Java,但正则表达式应该简单地替换'aba(+?)“aca”和“b$1ca”

  4. # 4 楼答案

    如果保证abaaca在给定字符序列中都是唯一的,则可以使用良好的旧String#replace而不是正则表达式:

    String result = original.replace("aba","b").replace("aca", "ca");
    
  5. # 5 楼答案

    尝试以下模式:aba[a-z]*aca

    Pattern p = Pattern.compile("aba[a-z]*aca");
    Matcher m = p.matcher("blingblangabablahacablingblang");
    while (m.find())
       System.out.println(">" + m.group() + "<");