2015-02-12 4 views
2

У меня есть файл im, читающий и ищущий слова.Java Regex подходящее слово

имя = Jake

активного имени доплеровского = 200 мс

при поиске им с помощью

if(line.contains("name") 

это утверждение находит как строку, но мне это нужно только найти первую строку, потому что у меня есть отдельное заявление, чтобы очистить «активное имя Допплера». Поэтому мне нужна помощь с регулярным выражением, чтобы проверить, что это просто пробел перед словом «имя». это несколько вариантов я придумал, но не работают

if(line.contains("\\s+\bname") 

или

if(line.contains("^\\s+name") 

благодаря

ответ

1

String.contains не принимает регулярное выражение в качестве аргумента.

Вы можете использовать:

// matches the whole line: 
//   ┌ start of input 
//   | ┌ any or no whitespace (as your original pattern suggests) 
//   | | ┌ literal "name" 
//   | | | ┌ any other character sequence to follow, or no characters 
line.matches("^\\s*name.*"); 

Примечание

Если вы хотите, чтобы улучшить это, вы можете объявить константу Pattern, и каждая строка матч/обратная ссылка.

Например:

// similar as before, but captures the value for "name" 
// and validates with "=characters" after it 
static final Pattern NAME_VALUE = Pattern.compile("^\\s*name\\s*=\\s*(.+)"); 
// ... 
Matcher m = NAME_VALUE.matcher(line); 
if (m.find()) { 
    // "jake" 
    String myValue = m.group(1); 
} 
+0

Спасибо !! Оно работает. – Nate

+0

@Nate, пожалуйста. Обязательно проверьте мое редактирование, которое может пригодиться. – Mena

-1

Если "имя" всегда является первым словом в вашей линии вы можете сопоставить с/^ * (имя)/

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