有 Java 编程相关的问题?

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

Java正则表达式替换了n个空格,其中只有n个空格,而不是n+1或n+1

嗨,这真的让我很不安,我就是搞不懂正则表达式

我想要一个正则表达式,它可以用'♥', 但前提是我有n个空格,而且不多也不少

伪代码:

String myReplaceFunction(String text, String replaceThis, String withThis, int countOfConcecutive);

String originalString ="    This is  a   very    short    text    .     ";
String regexMagicString = myReplaceFunction(" ", "♥", 4); 
System.out.println(regexMagicString); // "♥This is  a   very♥short♥text♥.     "

共 (2) 个答案

  1. # 1 楼答案

    因为这个空格可能不包括换行符\s是不可能的

    s = s.replace("(?<![ \t])[ \t]{13}(?![ \t])", "♥");
    
    • 对于空白:[ \t]
    • 负向后看:(?<![ \t])-零宽度
    • 负面展望:(?![ \t])

    我没有测试它

  2. # 2 楼答案

    这似乎有效(不需要向后看或向前看):

    /(^|\S)\s{4}(\S|$)/
    

    记住用$1♥$2替换它