gpt4 book ai didi

两个字符串之间的Java正则表达式提取字符串

转载 作者:行者123 更新时间:2023-11-29 19:16:42 31 4
gpt4 key购买 nike

问题

我有一个像这样的模式“提名?奥斯卡”或“提名 2 金球奖。提名?奥斯卡。30 胜 18 项提名”我想确定?使用正则表达式,所以奥斯卡奖的数量。

我尝试了什么

好像有

对应本题:Extract string between two strings in java

How do I find a value between two strings?我试过这种模式:

final Pattern pattern = Pattern.compile("for(.*?)Oscar");

接下来我尝试了这个问题:Java - Best way to grab ALL Strings between two Strings? (regex?)

  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: No successful match so far

我想我只是在监督一些非常简单的事情。

你们能帮帮我吗?

编辑


所以问题是我在循环之后调用了 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));
}

最佳答案

我按照 Extract string between two strings in 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”开头,在模式中以大写字母“O”开头。

关于两个字符串之间的Java正则表达式提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43270019/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com