我有以下 Java 代码:
String data = "MaxL-450";
if(!data.matches("MaxL\\-*"))
throw new IllegalArgumentException("Did not match.");
当我执行它时,抛出异常,因为显然正则表达式与我的字符串不匹配data
。我的正则表达式有问题还是这里发生了其他事情?提前致谢。
*
表示前一个字符出现零次或多次。你想要类似的东西"MaxL-[0-9]*"
,假设你想在破折号后匹配一个数字。
或者,您可以使用"MaxL-\\d*"
. 请注意,您需要在 Java 中使用两个斜杠,因为您需要转义斜杠本身。就我个人而言,我喜欢在 Java 中使用显式字符类(即[0-9]
),因为它更容易阅读,因为您的正则表达式不可避免地会变得更长和更复杂。
编辑:另外,正如戴夫牛顿指出的那样,破折号前面的转义斜线不是必需的,因为破折号不在字符类中。
如果您正在寻找连字符后的任何字符:
if(!data.matches("MaxL\\-.*"))
throw new IllegalArgumentException("Did not match.");