2017-01-06 2 views
1

WAHT является Java регулярное выражение, чтобы соответствовать только "PKGNAME" из строки:Regex матч одно слово

"name=pkgname -path=some.apk -minutes=120" 

Я попытался:

public static final Pattern PKG_NAME_REGEX = Pattern.compile("(name=)(\\b.+\\b)\\s"); 

буит группа 2 Match дает мне: «имя-пакета - путь = some.apk -minutes = 120"

благодаря

ответ

3

Что такое Java регулярное выражение, чтобы соответствовать только "PKGNAME" из строки:

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

(?<=name=)\S+ 
  • (?<=name=) положительный взгляд-за утверждать, что предыдущая позиция имеет name=
  • \S+ будет соответствовать 1 или более символов без пробелов

Использование Java:

public static final Pattern PKG_NAME_REGEX = Pattern.compile("(?<=name=)\\S+"); 

RegEx Demo

0

Repace точка на слово характер:

"(name=)(\\b\\w+\\b)\\s" 

и границы слов не usfull здесь:

"(name=)(\\w+)\\s" 
2

Попробуйте следующее:

String s = "name=pkgname -path=some.apk -minutes=120"; 
    Pattern p = Pattern.compile("name=(\\w+)"); 
    Matcher m = p.matcher(s); 
    if (m.find()) 
     System.out.println(m.group(1));