我有以下String
:Java正則表達式提取數據
String s = "[email protected]={aaaa}[email protected]={dddddddddd}"
我將如何使用Java正則表達式來解壓到:
Type=aaaa
Type=dddddddddd
我有以下String
:Java正則表達式提取數據
String s = "[email protected]={aaaa}[email protected]={dddddddddd}"
我將如何使用Java正則表達式來解壓到:
Type=aaaa
Type=dddddddddd
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Extract {
public static final Pattern PATTERN = Pattern.compile("(@)(\\w+)(=\\{)(d\\s*)+(})|(@)(\\w+)(=\\{)(a\\s*)+(})");
public static void main(String[] args) {
String s = "[email protected]={aaaa}[email protected]={dddddddddd}";
Matcher matcher = PATTERN.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
}
}
正則表達式對我來說似乎是錯誤的,它匹配所有ds和as,但僅捕獲其中一個。應該是(d +)|(a +)我猜。 – 2014-08-30 14:04:38
這就是我的想法,它應該匹配D或A的。對於例如,如果輸入的是dddddddddddaaa @類型= {AAAA} ddddddddddddddddd @類型= {DDDDDDDDDD}然後我的程序打印的
ddddddddddd
AAA
AAAA
ddddddddddddddddd
DDDDDDDDDD
–
sol4me
2014-08-30 14:09:35
您expresion似乎是一個小問題,它可以「噸me.a 工作 一個 一個 一個 d 一個 d 一個 一個 一個 – 2014-08-31 04:13:06
你真的應該閱讀正則表達式Java已經提供了一個文檔,並且有很多工具可以測試給定字符串的正則表達式。針對您的問題,有一種可能是:
"Type=\\{((?:a|d)+)\\}"
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test {
public static void main(String[] args) {
String str = "[email protected]={aaaa}[email protected]={dddddddddd}";
Pattern pattern = Pattern.compile("@Type=\\{.*?\\}");
Matcher matcher = pattern.matcher(str);
while(matcher.find()) {
String match = matcher.group();
match = "Type=" + match.substring(7, match.length() - 1);
System.out.println(match);
}
}
}
如果我改變類型給別人的話。這不適合我。 – 2014-08-31 04:50:44
這就是爲什麼你應該花時間學習一些細節問題,你的問題沒有提及「其他詞」而不是「類型」。 – 2014-08-31 06:24:27
我想這是你想要什麼:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Extract
{
public static final Pattern p = Pattern.compile("(Type=)(\\{(.*?)\\})+");
public static void main(String[] args) {
String s = "[email protected]={aaaa}[email protected]={dddddddddd}";
Matcher m = p.matcher(s);
while (m.find()) {
// Capture group 1 = "Type="
System.out.print(m.group(1));
// Capture group 3 is what's between the curly braces
System.out.println(m.group(3));
}
}
}
這會產生以下結果:
類型= AAAA
類型= DDDDDDDDDD
你的問題是不明確的,請準確定義你需要匹配和捕獲數據。你的「Type = aaaa」根本不是你給定數據的一部分,根本不能被捕獲。 – 2014-08-30 14:05:39
是的,有一些,我需要提取所有這樣的模式。 @ XXX = {xxxx} – 2014-08-31 04:21:33