【问题标题】:Escape any non-alphanumeric characters in a string using Regex使用正则表达式转义字符串中的任何非字母数字字符
【发布时间】:2021-08-11 08:49:31
【问题描述】:

我想转义字符串中出现的非字母数字字符,如下所示:

说,原来的字符串是:"test_",我想转换成"test\_"。

为了做到这一点,我可以采取一种方法,扫描原始字符串,构造一个新字符串,当找到一个非字母数字字符时,在这个字符前面附加一个'\'。

但我想知道是否有任何更简洁的方法可以使用正则表达式来做同样的事情。

【问题讨论】:

标签: java regex


【解决方案1】:

您可以使用如下所示的可替换参数:

public class Main {
    public static void main(String[] args) {
        String s = "test_";
        s = s.replaceAll("[^\\p{Alnum}]", "\\\\$0");

        System.out.println(s);
    }
}

输出:

test\_

注意事项:

  1. $0 表示与完整的正则表达式模式匹配的字符串,[^\\p{Alnum}]。
  2. \p{Alnum} 指定字母数字字符,^ 内 [] 用于否定模式。通过documentation 了解有关模式的更多信息。
  3. 请注意额外的一对\\ 用于转义\,该对已用于转义\。

【讨论】:

    猜你喜欢
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多