Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过正则表达式捕获多个组_Java_Regex_Matcher - Fatal编程技术网

Java 通过正则表达式捕获多个组

Java 通过正则表达式捕获多个组,java,regex,matcher,Java,Regex,Matcher,我有一个函数,可以定位一个工作正常的组 public static Optional<String> locateInText(String text, Pattern pattern) { Matcher matcher = pattern.matcher(text); return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty(); } 根据您的帖子,您可能希望匹配其中的字符串和子

我有一个函数,可以定位一个工作正常的组

public static Optional<String> locateInText(String text, Pattern pattern) {
    Matcher matcher = pattern.matcher(text);
    return matcher.find() ? Optional.of(matcher.group(1)) : Optional.empty();
}

根据您的帖子,您可能希望匹配其中的字符串和子字符串,我想不出合适的解决方案。但是,您的问题很简单,如果我们省略“БССБГö”,那么我们可以执行以下操作:

"((\\d*)\\s*Коробки|\\s*([\\d,]*)\\s*(?:Короб-шкаф[ова]*|Коробо*к[аи]*))"

根据您的帖子,要查找带有“κССббббб”的字符串或另一个字符串,您需要匹配其中的字符串和子字符串,我想不出合适的解决方案。但是,您的问题很简单,如果我们省略“БССБГö”,那么我们可以执行以下操作:

"((\\d*)\\s*Коробки|\\s*([\\d,]*)\\s*(?:Короб-шкаф[ова]*|Коробо*к[аи]*))"

要查找带有“κБСбббб”的字符串或另一个字符串

这对您有用吗?我没有使用您提供的方法,因为您提到的基本需求可以通过一个简单的
Matcher.replaceAll()
调用来实现

Pattern p = Pattern.compile("Всего\\s*(\\d*)(\\s*Коробки,?)?(\\s*([\\d,]*)\\s*(?:Короб-шкаф[ова]*|Коробо*к[аи]*))?");
String replacement = "$1 $4";
String text = "Всего 2 Коробки, 193 Короб-шкафа";
System.out.println( p.matcher( text ).replaceAll( replacement ) );

这会认为字符串“БСССГö”始终存在于输入中。

这对您有用吗?我没有使用您提供的方法,因为您提到的基本需求可以通过一个简单的
Matcher.replaceAll()
调用来实现

Pattern p = Pattern.compile("Всего\\s*(\\d*)(\\s*Коробки,?)?(\\s*([\\d,]*)\\s*(?:Короб-шкаф[ова]*|Коробо*к[аи]*))?");
String replacement = "$1 $4";
String text = "Всего 2 Коробки, 193 Короб-шкафа";
System.out.println( p.matcher( text ).replaceAll( replacement ) );

这将认为字符串“БСССГö”始终存在于输入中。

嘿,谢谢你的评论,我需要找到一个组或两个组,在你的情况下,它看起来像是一个组或另一个组。嘿,谢谢你的评论,我需要找到一个组或两个组,在你的情况下,它看起来像是一个或另一个群体。这不是我真正想要实现的,但非常感谢你的评论,我已经找到了另一种方法来获取结果,谢谢你的时间,你的评论仍然很有用哦。很抱歉,要求不正确。你有可能在这里发布你最终使用的东西吗?嘿,这并不是我真正想要实现的,但是非常感谢你的评论,我已经找到了另一种获取结果的方法,谢谢你的时间,你的评论仍然很有用哦。很抱歉,要求不正确。您是否可以在这里发布您最终使用的内容?