2012-09-25 3 views
3

Как бы найти, если целое слово, то есть "EU", существует внутри строки "I am in the EU.", а также не подходит для таких случаев, как "I am in Europe."?Регулярное найти целые слова

В принципе, мне нужно какое-то регулярное выражение для слова i.e. "EU" с не-алфавитными символами с обеих сторон.

+3

Посмотрите на границы слов \ b – gtgaxiola

ответ

6

.*\bEU\b.*

public static void main(String[] args) { 
     String regex = ".*\\bEU\\b.*"; 
     String text = "EU is an acronym for EUROPE"; 
     //String text = "EULA should not match"; 


     if(text.matches(regex)) { 
      System.out.println("It matches"); 
     } else { 
      System.out.println("Doesn't match"); 
     } 

    } 
2

Вы могли бы сделать что-то вроде

String str = "I am in the EU."; 
Matcher matcher = Pattern.compile("\\bEU\\b").matcher(str); 
if (matcher.find()) { 
    System.out.println("Found word EU"); 
} 
3

использовать шаблон с словоразделами:

String str = "I am in the EU."; 

if (str.matches(".*\\bEU\\b.*")) 
    doSomething(); 

Взгляните на docs for Pattern.

+0

+1 Я забыл '. *' Вокруг моего регулярного выражения :( – gtgaxiola

+0

К сожалению, документы Java действительно не говорят, что такое граница слов. Этот элемент SO углубляется глубже: https://stackoverflow.com/questions/1324676/what-is-a-word-boundary-in-regexes – akauppi

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