2015-05-21 2 views
4

У меня есть строка со значением. Я хочу проверить, есть ли в этой строке обратный список.Использовать несколько регулярных выражений для проверки черных списков в строке

например: String myString="a/b[c=\"1\"=\"1\"]/c\^]

Я хочу, чтобы проверить следующие образцы есть

  1. "1" = "1"
  2. ^

Я использую следующий код, который всегда дает false

  String text = "\"1\"=\"1\"^for occurrences of the http:// pattern."; 

     String patternString = "\"1\"=\"1\"|^"; 

     Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE); 

     Matcher matcher = pattern.matcher(text); 

     boolean matches = matcher.matches(); 

     System.out.println("matches = " + matches) 

Как проверить его с помощью одной строки регулярного выражения.

+0

' "1" = "1" и "^'должно быть два в строке или только один из них? – MChaker

+0

должно быть два в строке – user2694734

+0

Как вы принимаете ответ @anubhava, когда '" 1 "=" 1 "и'^'должны оба быть в строке? – MChaker

ответ

2

Пара вопросов с кодом:

String patternString = "\"1\"=\"1\"|^"; 

Здесь ^ должны быть экранированы, поскольку ^ это специальный мета характер так делают:

String patternString = "\"1\"=\"1\"|\\^"; 

Тогда этот вызов:

boolean matches = matcher.matches(); 

следует изменить на:

boolean matches = matcher.find(); 

как matches пытается совместить полную входную строку.

+0

Но OP хочет, чтобы строка содержала '' 1 "=" 1 "' ** AND ** '^' not ** OR **. – MChaker

+0

В этом случае 2 вызова 'str.contains' и никакого регулярного выражения – anubhava

1

Чтобы проверить ОБА"1"="1" и ^ находятся в входной строке

Использование регулярных выражений:

String text = "\"1\"=\"1\"^for occurrences of the http:// pattern."; 
Pattern p = Pattern.compile("\"1\"=\"1\".*\\^|\\^.*\"1\"=\"1\""); 
Matcher m = p.matcher(text); 
if(m.find()) 
    System.out.println("Correct String"); 

Использование contains метода:

String text = "\"1\"=\"1\"^for occurrences of the http:// pattern."; 
if (text.contains("\"1\"=\"1\"") && text.contains("^")) 
     System.out.println("Correct String"); 
Смежные вопросы