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