Java Regex-获取Regex的位置不匹配
我正在寻找能给我输入字符串不匹配位置的通用代码Java Regex-获取Regex的位置不匹配,java,regex,Java,Regex,我正在寻找能给我输入字符串不匹配位置的通用代码 public static boolean patternMatch(final String patternToMatch, final String valueToMatch){ if (null == patternToMatch || null == valueToMatch){ LOGGER.debug(String.format("Either patternToMatch(%s) or valu
public static boolean patternMatch(final String patternToMatch, final String valueToMatch){
if (null == patternToMatch || null == valueToMatch){
LOGGER.debug(String.format("Either patternToMatch(%s) or valueToMatch(%s) is null",patternToMatch,valueToMatch));
}
Pattern pattern = Pattern.compile(patternToMatch);
final Matcher matcher = pattern.matcher(valueToMatch);
return matcher.matches();
}
这是给定正则表达式和值的代码,检查该值是否与正则表达式匹配。如果不匹配,则希望抛出异常,说明“位置处的匹配失败”
如何获得不匹配的位置。正则表达式可以是任何东西。有什么算法可以得到它吗
谢谢您正在调用匹配整个主题字符串的
matcher.matches()
,因此没有任何部分与整个目标字符串不匹配,当它匹配时,整个目标字符串都匹配,我希望您可以获得匹配的值
正如您在评论中所问的那样如何获得匹配的值?
为此,您可以在调用matcher.matches()
后调用matcher.group()
,但是由于matches()
方法匹配整个字符串,因此matches.group()
将返回整个字符串,如果它不匹配,将引发异常
如果要匹配正则表达式的部分,则需要使用find()
方法,然后group()将只返回匹配的部分
ex
String s = "this is a cat";
Matcher m = Pattern.compile("\\bcat\\b").matcher(s);
m.find();
System.out.println(m.group());
上面的代码打印“cat”,因为cat是匹配的部分,但是如果您使用m.matches()
,然后尝试调用m.grounp()
,我将在线程“main”java.lang.IllegalStateException中抛出异常:未找到匹配项,如果使用mathces,则抛出整个字符串
祝您愉快比赛失败的位置是索引0。由于正则表达式使用回溯来尝试各种匹配选项,所以正则表达式不可能精确定位单个故障点。你所要求的是做不到的,好吧。正则表达式测试器如何给我们匹配的部分值?不知道,因为我不知道你们在说什么测试器。您的问题是关于Java正则表达式引擎的。它不能满足你的要求。@Aavik你认为我回答了你的问题吗?你还有其他疑问吗?