我需要使用正則表達式在Java中提取字符串的某個部分。使用正則表達式在Java中提取字符串的某個部分
例如,我有一個字符串completei4e10
,我需要提取那就是i
和e
之間的值 - 在這種情況下,結果將是4
:completei 4 e10
。
我該怎麼做?
我需要使用正則表達式在Java中提取字符串的某個部分。使用正則表達式在Java中提取字符串的某個部分
例如,我有一個字符串completei4e10
,我需要提取那就是i
和e
之間的值 - 在這種情況下,結果將是4
:completei 4 e10
。
我該怎麼做?
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));
}
}
}
有幾種方法可以做到這一點,但你可以這樣做:
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說明符。
這是我總是使用的方法。 – Molske 2010-08-11 14:20:06