x.matches(y)
эквивалентно
Pattern.compile(y).matcher(x).matches()
и требует всю строку x
, чтобы соответствовать регулярному выражению y
. Если вы просто хотите знать, если есть некоторые подстроки из x
, что соответствует y
, то вам нужно использовать find()
вместо matches()
:
if(Pattern.compile("[^a-zA-Z.]").matcher("test%[email protected]*)$(%").find())
System.exit(0);
В качестве альтернативы вы можете полностью изменить смысл теста:
if(!"test%[email protected]*)$(%".matches("[a-zA-Z.]*"))
, предоставляя шаблон, который соответствует строкам, которые разрешены, а не символы, которые не являются, а затем выясняет, не сработала ли тестовая строка , чтобы соответствовать этому шаблону р-н.
Если вы думаете, что это должно быть верно, ваше регулярное выражение не делает то, что вы думаете, что оно делает. Расскажите, пожалуйста, что вы думаете, что это должно делать, мы можем сказать вам, где вы поступили неправильно. – Dukeling
Другое дикое предположение здесь. Но вы имеете в виду использовать '^' для обозначения начала линии? Если так, вы делаете это неправильно. – Sanchit
когда-либо пытался 'if (matcher.find() == true) return matcher.group (0);' –