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