我需要使用正则表达式在Java中提取字符串的某个部分。
例如,我有一个字符串completei4e10
,我需要提取i
和e
之间的值 - 在这种情况下,结果将是{{1 }:4
。
我该怎么做?
答案 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.*
,具体取决于i
和e
周围的内容。
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说明符。