[英]Java Regex Extract String between two Strings
我有一个这样的模式:“奥斯卡提名”或“两个金球奖提名。奥斯卡提名。30胜18项提名”,我想确定? 加上正则表达式,所以奥斯卡的数量。
好像在那里
对应于此问题: 在Java和Java的两个字符串之间提取字符串
如何找到两个字符串之间的值? 我尝试了这种模式:
final Pattern pattern = Pattern.compile("for(.*?)Oscar");
接下来,我在以下问题之后尝试了此方法 : Java-捕获两个字符串之间的所有字符串的最佳方法? (正则表达式?)
final Pattern pattern = Pattern.compile(Pattern.quote("Nom") +"(.*?)"+ Pattern.quote("Oscar"));
我的其余代码:
final Matcher matcher = pattern.matcher("Nom for 3 Oscar");
while(matcher.find()){
}
Log.d("Test", matcher.group(1));
所有这些模式都会导致此异常:
java.lang.IllegalStateException:到目前为止没有成功的匹配
我想我只是监督一些非常简单的事情。
你们能帮我吗?
所以问题是我在循环后调用matcher.group(1)。 我误解了find方法的工作。 但是,当我在循环内调用matcher.group(1)时,此代码确实有效。
final Pattern pattern = Pattern.compile("for(.*?)Oscar");
final Matcher matcher = pattern.matcher("Nom for 3 Oscar");
while(matcher.find()){
Log.d("Test", matcher.group(1));
}
试试这个模式
\w+\s+\w+\s(\d+)\s\w+
尝试这个,
String str = "Nom for 3 Oscar";
Pattern pattern = Pattern.compile("\\w+\\s+\\w+\\s+(\\d+)\\s+\\w+");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
Log.d("Test", matcher.group(1));
}
我写测试,如在Java中的两个字符串之间的提取字符串中 ,这是工作。 我认为您的输入字符串不匹配:
@Test
public void regex() {
String str = "Nom for 3 Oscar, dom for 234235 Oscars";
Pattern pattern = Pattern.compile("for(.*?)Oscar");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
输出:
3
234235
在我回答之后,您编辑了问题,然后看到,在输入字符串“ oscar”中以小写字母“ o”开头,在Pattern中以大写字母“ O”开头。
试试这个模式:
"\\w+\\s+\\w+\\s+(\\w+)\\s+\\w+"
测试代码:
String str = "Nom for you Oscar";
Pattern pattern = Pattern.compile("\\w+\\s+\\w+\\s+(\\w+)\\s+\\w+");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
您想截取第三个字符串吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.