gpt4 book ai didi

java - 正则表达式不从模式中删除下划线

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:37:24 27 4
gpt4 key购买 nike

我试图通过使用 java.util.regex.Matcher 和 java.util.regex.pattern 编写代码以允许字符串中的某些特殊字符,但这并没有从中删除下划线。我是新来的。我需要这方面的帮助。代码摘录如下:

  // String to be scanned to find the pattern.
String line = "This order was _:$ placed for QT3000! OK?";
String pattern = "[^\\w\\s\\-?:().,'+\\/]";
String s = null;

// Create a Pattern object
Pattern r = Pattern.compile(pattern);

// Now create matcher object.
Matcher m = r.matcher(line);
s= m.replaceAll("");
System.out.println("Output: " + s);

预期:此订单是:为 QT3000 下的订单好吗?实际:此订单是 _:为 QT3000 下的订单好吗?

最佳答案

\w 模式匹配下划线,[^\w] 匹配除字母、数字和下划线以外的任何字符。

替换为\p{Alnum}:

String pattern = "[^\\p{Alnum}\\s?:().,'+/-]";

请注意,我将连字符放在字符类的末尾,以免对其进行转义,并从 / 中删除转义的 \ 因为它不是特殊的正则表达式元字符。

参见 Java regex demo .

[^\\p{Alnum}\\s?:().,'+/-] 模式匹配任何字符,但:

  • \p{Alnum} - 字母数字 [a-zA-Z0-9]
  • \s - 空格
  • ? - 问号
  • : - 一个冒号
  • ( - ( 符号
  • ) - ) 符号
  • . - 一个点
  • , - 逗号
  • ' - 单引号
  • + - 加号
  • / - 正斜杠
  • - - 一个连字符。

关于java - 正则表达式不从模式中删除下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com