java - REGEX 匹配器不替换反斜杠

标签 java regex escaping backslash

Matcher 中的函数 appendReplacement(StringBuffer sb, String replacement) 忽略带有双反斜杠的转义字符。我想将两行替换为一行,按原样用\N 分隔。这是我的代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;



public class Test {

    public static void main(String[] args) {
        String str = "Lorem ipsum dolor sit amet,\n"
                + "consectetur adipiscing elit\n"
                + "\n"
                + "sed do eiusmod tempor incididunt ut\n"
                + "labore et dolore magna aliqua\n";
        StringBuffer sb = new StringBuffer();
        Pattern p = Pattern.compile("(.+)\n(.+)\n");
        Matcher m = p.matcher(str);
        while(m.find()) {
            String xyz = m.group(1) + "\\N" + m.group(2);
            System.out.println(xyz);
            m.appendReplacement(sb, xyz);
        }                    
        m.appendTail(sb);
        System.out.println("\n" + sb);
    }

}  

输出:

Lorem ipsum dolor sat amet,\Nconsectetur adipiscing elit sed do eiusmod tempor inciditunt ut\Nlabore et dolore magna aliqua

Lorem ipsum dolor sat amet,Nconsectetur adipiscing elit sed do eiusmod tempor inciditunt utNlabore et dolore magna aliqua

最佳答案

Note that backslashes () and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string. Dollar signs may be treated as references to captured subsequences as described above, and backslashes are used to escape literal characters in the replacement string.

您正在 xyzString 对象中插入 \N。追加函数将用替换字符替换反斜杠字符,就像将其放入字符串文字中一样。因此,要通过append函数得到\N,需要转义两次:\\\\N

关于java - REGEX 匹配器不替换反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34708630/

相关文章:

javascript - 存储和解析 CSS/JS

c# - 使用 C# 或 Jquery 将多个 <br> 替换为单个 <br>

Javascript:用正则表达式将字符串中所有出现的 ' a ' 替换为 ' b '

java - MySQL 中的保留字转义 : Unknown column 'PASSWORD' in 'field list'

java - 如何在 Netbeans 中隐藏 jButton 事件方法

php - 用元素替换每个字符

linux - 以与 Bash 相同的方式转义文件名

java - 如何转义XML标签?

java - 无法找到 tools.jar

java - 无法在Struts 2中发送和接收ajax数据