java - 正则表达式验证不正确

标签 java regex

任何人都可以解释一下为什么这个正则表达式不能捕获输入。我需要捕获正则表达式中提到的特殊字符。

        final String REGEX="[.,%*$#@?^<!&>'|/\\\\~\\[\\]{}+=\"-]*";


        Pattern pattern = Pattern.compile(REGEX);
        Matcher matcher = pattern.matcher("2c450807-4a4c-4f18-bf4f-5a100ced87a0");

        if (matcher.matches()) {

            System.out.println("found");

        }
        else{

            System.out.println("not found!");
        }

这将打印“未找到!”。请帮助我。

最佳答案

代替 matcher.matches() 使用:

matcher.find()

matcher.matches() 期望匹配完整的输入。

最好使用这个正则表达式:

final String REGEX="[.,%*$#@?^<!&>'|/\\\\~\\[\\]{}+=\"-]";

*放在前面也会使其匹配空字符串。

关于java - 正则表达式验证不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32399600/

相关文章:

regex - 使用 perl 正则表达式删除标签之间的字符串

java - 用于向 Android 应用程序添加自定义布局的按钮

java - 查找枚举中的最高值

java - Java 和 SQL 中的时间跨度?

javascript - 是否有一个明确的解决方案可以使用 jQuery 来验证 URL 而无需插件?

regex - Emacs:使用正则表达式搜索缓冲区并在新缓冲区中显示结果?

java - 重新打开应用程序时获取 AsyncTask 状态

Javafx FXML 布局拖放

javascript - Regexp Javascript 多个匹配和多个分隔符

python - 如何使用正则表达式提取荷兰邮政编码 (Python)