使用正则表达式在Java中提取字符串的某个部分

时间:2010-08-11 14:12:06

标签: java regex

我需要使用正则表达式在Java中提取字符串的某个部分。

例如,我有一个字符串completei4e10,我需要提取ie之间的值 - 在这种情况下,结果将是{{1 }:4

我该怎么做?

2 个答案:

答案 0 :(得分:2)

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 ) );
        }

    }
}

答案 1 :(得分:0)

有几种方法可以做到这一点,但你可以这样做:

    String str = "completei4e10";

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

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

或者模式可能是[^i]*i([^e]*)e.*,具体取决于ie周围的内容。

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

[…]character class。像[aeiou]这样的东西匹配任何一个小写元音。 [^…]否定的字符类。 [^aeiou]除了小写元音之外的任何内容匹配。

(…)capturing group。在此上下文中,*+repetition说明符。