Java/Regex-在下次匹配之前匹配所有内容
在下一次与Java/Regex匹配之前,如何匹配所有内容?例如,我有以下字符串: “查看@纽约的天气和@给我订一份比萨饼” 我想要两个匹配项:Java/Regex-在下次匹配之前匹配所有内容,java,regex,Java,Regex,在下一次与Java/Regex匹配之前,如何匹配所有内容?例如,我有以下字符串: “查看@纽约的天气和@给我订一份比萨饼” 我想要两个匹配项: @纽约天气和 @给我点个比萨饼 我尝试了以下操作:@.+@但它也从下一个匹配中选择了@符号。也许,这个简单的表达式可能与您的想法非常接近: @[^@]* 试验 如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入 先查找最后一个@,或者使用[^@]+只是一个想法,
@纽约天气和
@给我点个比萨饼
我尝试了以下操作:
@.+@
但它也从下一个匹配中选择了@
符号。也许,这个简单的表达式可能与您的想法非常接近:
@[^@]*
试验
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入
先查找最后一个
@
,或者使用[^@]+
只是一个想法,但非贪婪的操作符不会也起作用吗<代码>@.+?组仅用于此:(@[^@]+?)(@.+)$
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class re{
public static void main(String[] args){
final String regex = "@[^@]*";
final String string = "Check the @weather in new york and @order me a pizza";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Full match: @weather in new york and
Full match: @order me a pizza