регулярное выражение, чтобы получить слово между двумя undescores - PullRequest
0 голосов
/ 26 октября 2018

У меня есть строка вроде bla_bla**_**test**_1**023

и хотел бы извлечь слово между _ и любым подчеркиванием, за которым следует цифра _digit, равная test в приведенном выше примере.

Я попробовал следующее регулярное выражение, но, к сожалению, не работает: [^_ ]+(?=[ _\d]) - он получает все слова перед "_digit", а не только тот, который до _digit

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Это должно работать для вас.Используйте Pattern и Matcher с осмотрами .

public static void main(String[] args) {
    String word= "bla_bla_test_1023";
    Pattern p = Pattern.compile("(?<=_)([^_]+)(?=_\\d+)");
    Matcher m = p.matcher(word);
    while (m.find()) {
        System.out.println(m.group());
    }


}

O / P:

test

0 голосов
/ 26 октября 2018
 [^_]*(?=_\d)

Вы хотите сопоставить все, кроме _, пока не доберетесь до _, за которым следует цифра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...