我有以下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