我有以下Java代码:
String data = "MaxL-450";
if(!data.matches("MaxL\\-*"))
throw new IllegalArgumentException("Did not match.");
Run Code Online (Sandbox Code Playgroud)
当我执行它时,抛出异常,因为显然正则表达式与我的data字符串不匹配.我的正则表达式有问题还是其他事情发生在这里?提前致谢.
*表示前一个字符出现零次或多次.你想要类似的东西"MaxL-[0-9]*",假设你想在破折号后匹配一个数字.
或者你可以使用"MaxL-\\d*".请注意,Java中需要两个斜杠,因为您需要转义斜杠本身.我个人喜欢[0-9]在Java中使用显式字符类(即),因为它更容易阅读,因为你的正则表达式不可避免地变得更长,更复杂.
编辑:另外,正如Dave Newton指出的那样,破折号前面的逃生斜线不是必需的,因为破折号不在角色类中.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |