簡體   English   中英

正則表達式不從模式中刪除下划線

[英]regex not removing underscore from pattern

我試圖通過使用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演示

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

  • \\p{Alnum} - 字母數字[a-zA-Z0-9]
  • \\s - 空白
  • ? - 一個問號
  • : - 冒號
  • ( -一(符號
  • ) - a )符號
  • . - 一個點
  • , - 一個逗號
  • ' - 單引號
  • + - 一個加號
  • / - 正斜杠
  • - - 連字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM