java - 正则表达式模式匹配器失败
问题描述
我想知道为什么下面的正则表达式模式匹配器失败。
我已经包含?A-Za-z0-9
了字符和数字
System.out.print(Pattern.compile("[?A-Za-z0-9]").matcher("aa22Aa?").matches());
解决方案
?A-Za-z0-9
只会匹配集合中定义的特定字符的一次出现
您需要+
在模式中添加量词,以便一个或多个字符匹配
[?A-Za-z0-9]+
您可以使用类的函数来编译模式并将其与字符串匹配,而不是调用.compile()
函数来编译模式然后调用.matcher()
函数来创建一个。Matcher
.matches()
Pattern
System.out.print(Pattern.matches("[?A-Za-z0-9]+", "aa22Aa?"));
编辑:
正如@Andreas 正确指出的那样,您还可以使用类.matches()
的功能String
System.out.print("aa22Aa?".matches("[?A-Za-z0-9]+"));
推荐阅读
- spring-boot - Spring Boot 连接到 IBM MQ Cloud
- html - 我无法在 Angular/html 脚本中打印对象的值
- c# - 如何区分 Cosmos DB 更改源中的插入和更新
- optimization - LLVM IR(中间表示)中的“inttoptr”指令是否无效?
- discord - 如何向服务器的所有成员发送直接消息?
- matrix-multiplication - Matrix 矩阵产品操作 OpenMDAO
- node.js - 如何从 Scival Api 检索作者指标?
- python - 程序立即跳转到我的代码中的 else 子句
- python - 使用python在双引号文件夹中提取rar文件
- sql - 使用 ST_ClosestPoint、ST_StartPoint 和 ST_EndPoint 查找距离线起点和终点最近的对象