繁体   English   中英

正则表达式 - 列出与模式不匹配的字符

[英]Regex - list the characters which are not matching the pattern

我有下面的正则表达式,它说明给定的输入是否与模式匹配

String input="The input here @$%/";
String pattern="[a-zA-Z0-9,.\\s]*";
if (!input.matches(pattern)) {
System.out.println("not matched");
}else{
  System.out.println("matched");
}

我能知道如何增强它以列出输入中与模式不匹配的字符吗? 例如这里@$%/

正如anubhava 在评论中已经提到的那样,只需使用input.replaceAll(pattern, "")

演示:

class Main {
    public static void main(String[] args) {
        String input = "The input here @$%/";
        String pattern = "[a-zA-Z0-9,.\\s]*";
        String nonMatching = input.replaceAll(pattern, "");
        System.out.println(nonMatching);
    }
}

Output:

@$%/

利用

[^a-zA-Z0-9,.\s]

请参阅正则表达式证明

解释

 [^a-zA-Z0-9,.\s]         any character except: 'a' to 'z', 'A' to
                           'Z', '0' to '9', ',', '.', whitespace (\n,
                           \r, \t, \f, and " ")

Java 代码片段

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

public class Example {
    public static void main(String[] args) {
        final String regex = "[^a-zA-Z0-9,.\\s]";
        final String string = "The input here @$%/";
        
        final Pattern pattern = Pattern.compile(regex);
        final Matcher matcher = pattern.matcher(string);
        
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM