2015-07-13 7 views
-2

У меня есть строка String в Java, как следующий глубоко DAAP DAAP заглядывать 4000 Есть ли способ, что я могу проверить для вхождений строковых литералов в строке, как проверка на модели, как глубокой DAAP или DAAP заглядыватьПроверка строки вхождений в строке

+3

'String # contains'? – MadProgrammer

+0

ex: «Hello World» .contains («Hello»); возвращает true, если строка содержит заданную последовательность символов – Satya

ответ

0
^.*?(?:\bdeep daap\b)|(?:\bdaap peek\b).*$ 

Вы можете попробовать this.See демо.

https://regex101.com/r/hR7tH4/14

+0

Можете ли вы объяснить логику, я не понял, как она работает – dileepVikram

+0

@dileepVikram просто ищет строку 'deep daap' или' daap peek' в данной строке. Если он находит это, его провал else fail – vks

0

Вот 2 способа для вас, чтобы проверить:

Non-регулярное выражение способ с помощью contains (если вы не ищете целых слов):

String str = "deep daap daap peek is 4000"; 
System.out.println("Contains: " + (str.contains("deep") && str.contains("daap"))); 

regex way (если вы : поиск целых слов)

String rx = "^(?=.*\\bdeep\\b)(?=.*\\bdaap\\b)"; 
Pattern ptrn = Pattern.compile(rx); 
Matcher m = ptrn.matcher(str); 
if (m.find()) { 
    System.out.println("Regex: true"); 
} 

См IDEONE demo

Все присутствие слово проверяется с 2 привязанных просмотровых-aheads (?=.*\\bdeep\\b)(?=.*\\bdaap\\b): каждый проверяет, есть целое слово (из-за \b) после произвольного числа символов (добавить (?s) на начало шаблона, если на вашем вводе есть символы новой строки). Проверка выполняется в начале строки. Регулярное выражение требует как слова для присутствия.

+0

Печать 'Содержит: true' не имеет большого смысла. –

+0

@ M.Shaw: Это только демо: Я почти не помню, чтобы я печатал логические значения. –

Смежные вопросы