有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式Java正则表达式提取数据

我有以下几点String

String s = "ddddddddddd@Type={aaaa}ddddddddddddddddd@Type={dddddddddd}"

如何使用Java正则表达式将其提取到:

Type=aaaa
Type=dddddddddd

共 (4) 个答案

  1. # 1 楼答案

    我想这就是你想要的:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Extract
    {
        public static final Pattern p = Pattern.compile("(Type=)(\\{(.*?)\\})+");
    
        public static void main(String[] args) {
            String s = "ddddddddddd@Type={aaaa}ddddddddddddddddd@Type={dddddddddd}";
            Matcher m = p.matcher(s);
    
            while (m.find()) {
                // Capture group 1 = "Type="
                System.out.print(m.group(1));   
                // Capture group 3 is what's between the curly braces
                System.out.println(m.group(3)); 
            }
        }
    }
    

    这将生成以下输出:

    Type=aaaa
    Type=dddddddddd

  2. # 2 楼答案

    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
    
    public class Test {
        public static void main(String[] args) {
            String str = "ddddddddddd@Type={aaaa}ddddddddddddddddd@Type={dddddddddd}";
    
            Pattern pattern = Pattern.compile("@Type=\\{.*?\\}");
            Matcher matcher = pattern.matcher(str);
    
            while(matcher.find()) {
                String match = matcher.group();
                match = "Type=" + match.substring(7, match.length() - 1);
                System.out.println(match);
            }
        }
    }
    
  3. # 3 楼答案

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class Extract {
        public static final Pattern PATTERN = Pattern.compile("(@)(\\w+)(=\\{)(d\\s*)+(})|(@)(\\w+)(=\\{)(a\\s*)+(})");
        public static void main(String[] args) {
            String s = "ddddddddddd@Type={aaaa}ddddddddddddddddd@Type={dddddddddd}";
    
    
            Matcher matcher = PATTERN.matcher(s);
    
            while (matcher.find()) {
                System.out.println(matcher.group());
            }
    
    
        }
    }
    
  4. # 4 楼答案

    您应该自己阅读正则表达式,Java已经提供了一个文档,并且有很多工具可以测试给定字符串的正则表达式。您的问题的一种可能是:

    "Type=\\{((?:a|d)+)\\}"
    

    Docs in Java

    QuickREx