Java 第一个和第二个tocen正则表达式
如何从字符串中获取“”中的第一个和第二个文本? 我可以用Java 第一个和第二个tocen正则表达式,java,regex,Java,Regex,如何从字符串中获取“”中的第一个和第二个文本? 我可以用indexOf来做,但这真的很无聊(( 例如,我有一个用于解析的字符串,比如:“aaa”:“bbbbb”perhapsSomeOtherText 我想借助Regex模式获得aaa和bbbbb——这将帮助我在switch语句中使用它,并将大大简化我的应用程序/有几种方法可以做到这一点 将StringTokenizer或Scanner与UseDelimiter方法一起使用有几种方法 String str = "\"aaa\":\"bbbbb\"
indexOf
来做,但这真的很无聊((
例如,我有一个用于解析的字符串,比如:“aaa”:“bbbbb”perhapsSomeOtherText
我想借助Regex模式获得
aaa
和bbbbb
——这将帮助我在switch语句中使用它,并将大大简化我的应用程序/有几种方法可以做到这一点
将StringTokenizer或Scanner与UseDelimiter方法一起使用有几种方法
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("\"", ""));
}
将StringTokenizer或Scanner与UseDelimiter方法一起使用有几种方法
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("\"", ""));
}
将StringTokenizer或Scanner与UseDelimiter方法一起使用有几种方法
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("\"", ""));
}
将StringTokenizer或Scanner与UseDelimiter方法一起使用
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
输出:
aaa
bbbbb
输出:
aaa
bbbbb
输出:
aaa
bbbbb
像这样的
Pattern pattern = Pattern.compile("\"([^\"]*)\"");
Matcher matcher = pattern.matcher("\"aaa\":\"bbbbb\"perhapsSomeOtherText");
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
aaa
bbbbb
像这样的
Pattern pattern = Pattern.compile("\"([^\"]*)\"");
Matcher matcher = pattern.matcher("\"aaa\":\"bbbbb\"perhapsSomeOtherText");
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
aaa
bbbbb
像这样的
Pattern pattern = Pattern.compile("\"([^\"]*)\"");
Matcher matcher = pattern.matcher("\"aaa\":\"bbbbb\"perhapsSomeOtherText");
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
aaa
bbbbb
像这样的
Pattern pattern = Pattern.compile("\"([^\"]*)\"");
Matcher matcher = pattern.matcher("\"aaa\":\"bbbbb\"perhapsSomeOtherText");
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
aaa
bbbbb
如果您只有冒号分隔的字符串,只需将其拆分:
String str = ...; // colon delimited
String[] parts = str.split(":");
请注意,split()
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);
}
然而,如果您想在更复杂的情况下使用模式来匹配和提取字符串片段,请按照以下操作:
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);
}
请注意定义捕获组的方括号。如果您只有以冒号分隔的字符串,请将其拆分:
String str = ...; // colon delimited
String[] parts = str.split(":");
请注意,split()
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);
}
然而,如果您想在更复杂的情况下使用模式来匹配和提取字符串片段,请按照以下操作:
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);
}
请注意定义捕获组的方括号。如果您只有以冒号分隔的字符串,请将其拆分:
String str = ...; // colon delimited
String[] parts = str.split(":");
请注意,split()
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);
}
然而,如果您想在更复杂的情况下使用模式来匹配和提取字符串片段,请按照以下操作:
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);
}
请注意定义捕获组的方括号。如果您只有以冒号分隔的字符串,请将其拆分:
String str = ...; // colon delimited
String[] parts = str.split(":");
请注意,split()
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);
}
然而,如果您想在更复杂的情况下使用模式来匹配和提取字符串片段,请按照以下操作:
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);
}
请注意定义捕获组的括号。在提问之前先尝试学习正则表达式如何?在提问之前先尝试学习正则表达式如何?在提问之前先尝试学习正则表达式如何?在提问之前先尝试学习正则表达式如何?您的代码不会编译,即使会编译,也会给出:“
。你的代码不编译,即使它会编译,它也会给出:“
。你的代码不编译,即使它会编译,它也会给出:”
。你的代码不编译,即使它会编译,它也会给出”:“
。谢谢你,我还不知道group(enumerator)!这是我真正需要的)Alex,我已经将正则表达式改为(“(\\w+):(\\d+:);为了找到像“aaa”这样的字符串:“123”fdfff但它不起作用-我在正则表达式模式中犯了什么错误?好的,所以第二个片段只匹配数字。它不匹配您的示例,但可能这就是您需要的。所以,祝您好运。是的,但在这种情况下,m.find()总是错误的((例如对于字符串({“alan”):“123”)jeff我用(\\w+):(\\d+):“regex((这是因为引号是字符串的一部分。您应该将regex更改为模式。编译(“\”(\\w+):\”)
。但是等等!!!似乎您正在解析JSON。所以,使用JSON解析器,不要尝试重新发明轮子。谢谢,我不知道组(枚举器)!这就是我真正需要的)Alex,我已将正则表达式更改为(“(\\w+):(\\d+)”;以便查找像“aaa”这样的字符串:“123”fdfff但它不起作用-我在正则表达式模式中做错了什么?好的,所以第二个片段只匹配数字。它与您的示例不匹配,但可能这就是您需要的。祝您好运。是的,但m.find()在本例中始终为false((例如,对于字符串({“alan”:“123”jeff I get m.find()==false和(“(\\w+):(\\d+):”regex((这是因为引号是字符串的一部分。您应该将regex更改为模式。compile(\“(\\w+):\”(\\d+))
。但是等等!!!你似乎在解析JSON。所以,使用JSON解析器,不要试图重新发明轮子。谢谢,我还不知道组(枚举器)!这正是我真正需要的)Alex,我已将正则表达式改为((\\w+)(\\d+);以便找到像“aaa”这样的字符串:“123”fdfff但它不起作用-我在正则表达式模式中做错了什么?好的,所以第二个片段只匹配数字。它与您的示例不匹配,但这可能是您需要的。所以,祝您好运。是的,但在这种情况下,m.find()总是false((例如,对于字符串({“alan”):“123”jeff,我得到m.find()==false,带有(“(\\w+)(\\d+):::::”正则表达式((这是因为引号是您字符串的一部分。您应该将正则表达式更改为模式。编译(“\”(\\w+):“\”(\\d+)”)
。但是等等!!!似乎您正在解析JSON。所以,使用JSON解析器,不要试图重新发明轮子。谢谢,我还不知道组(枚举器)!这才是我真正需要的)Alex,我已将正则表达式更改为(“(\\w+):(\\d+)”;以便查找像“aaa”这样的字符串:“123”fdfff,但它不起作用-我在正则表达式模式中做错了什么?好的,所以第二个片段只匹配数字。它与您的示例不匹配,但可能这就是您所需要的。因此,祝您好运。是的,但m.find()总是这样