Извлечение определенной части строки в Java с помощью регулярных выражений - PullRequest
0 голосов
/ 11 августа 2010

Мне нужно извлечь определенную часть строки в Java с помощью регулярных выражений.

Например, у меня есть строка completei4e10, и мне нужно извлечь значение, которое находится между i и e - в этом случае результат будет 4: completei 4 e10.

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 11 августа 2010
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        Pattern p = Pattern.compile( "^[a-zA-Z]+([0-9]+).*" );
        Matcher m = p.matcher( "completei4e10" );

        if ( m.find() ) {
            System.out.println( m.group( 1 ) );
        }

    }
}
0 голосов
/ 11 августа 2010

Есть несколько способов сделать это, но вы можете сделать:

    String str = "completei4e10";

    str = str.replaceAll("completei(\\d+)e.*", "$1");

    System.out.println(str); // 4

Или, может быть, шаблон [^i]*i([^e]*)e.*, в зависимости от того, что может быть вокруг i и e.

    System.out.println(
        "here comes the i%@#$%@$#e there you go i000e"
            .replaceAll("[^i]*i([^e]*)e.*", "$1")
    );
    // %@#$%@$#

[…] - это класс символов . Что-то вроде [aeiou] соответствует одному из строчных гласных. [^…] является отрицательным классом символов. [^aeiou] соответствует одному из всего, кроме строчных гласных.

(…) - это группа захвата . * и + являются повторением в этом контексте.

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