第一和第二个tocen正则表达式

时间:2014-03-12 10:21:54

标签: java regex

我怎样才能得到""中的第一个和第二个文本。从字符串? 我可以用indexOf来做,但这真的很无聊(( 例如,我有一个解析字符串,如:"aaa":"bbbbb"perhapsSomeOtherText 我希望在Regex模式的帮助下得到aaabbbbb - 这将帮助我在switch语句中使用它并将大大简化我的app /

4 个答案:

答案 0 :(得分:1)

String str = "\"aaa\":\"bbbbb\"perhapsSomeOtherText";

Pattern p = Pattern.compile("\"\\w+\""); // word between ""
Matcher m = p.matcher(str);
while(m.find()){
   System.out.println(m.group().replace("\"", ""));
}

输出:

aaa
bbbbb

答案 1 :(得分:1)

这样的东西?

Pattern pattern = Pattern.compile("\"([^\"]*)\"");
Matcher matcher = pattern.matcher("\"aaa\":\"bbbbb\"perhapsSomeOtherText");
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出

aaa
bbbbb

答案 2 :(得分:1)

如果您拥有的只是冒号分隔的字符串,则将其拆分:

String str = ...; // colon delimited
String[] parts = str.split(":");

请注意,split()每次都会收到正则表达式并进行复制。要提高代码的效果,您可以使用Pattern,如下所示:

private static Pattern pColonSplitter = Pattern.compile(":");

// now somewhere in your code:
String[] parts = pColonSplitter.split(str);

但是,如果您想在更复杂的情况下使用模式匹配和提取字符串片段,请执行以下操作:

Pattert p = Patter.compile("(\\w+):(\\w+):");
Matcher m = p.matcher(str);
if (m.find()) {
   String a = m.group(1);
   String b = m.group(2);
}

注意定义捕获的组的括号。

答案 3 :(得分:0)

有几种方法可以做到这一点 使用StringTokenizer或Scanner with UseDelimiter方法