有 Java 编程相关的问题?

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

正则表达式Java如何格式化正则表达式?

我想创建一个小窗口,用户将:

  1. 在JTextField1中输入一些文本
  2. 然后,他将在JTextField2中输入一个正则表达式,以检查JTextField1中的文本是否有与此正则表达式匹配的文本
  3. 和另一个字段JTextField3,他可以输入匹配文本的格式
  4. 然后,用户将获得与此匹配并在JTextField4中格式化的最终文本

这似乎很复杂,但我希望这张截图能澄清我的需求: enter image description here

实现前两个字段很容易,但是第三个字段,这就是我想问的。我读过一些可以帮助我做到这一点的参考文献,但我不太清楚。我的理解是,如果我按照屏幕截图中显示的方式编写\2,\1,那么它将抓住正则表达式中的第二个括号,然后添加逗号+空格,然后抓住正则表达式中的第一个括号,给出正确的最终结果

1。这是对的,还是我遗漏了什么

2。这是实现我需要做的事情的最佳解决方案吗

3。在Java code=返回“K1234 T1234567”获取匹配器后,使用指定格式格式化它的代码是什么


共 (1) 个答案

  1. # 1 楼答案

    你所拥有的看起来是对的。要格式化结果,您需要以下内容:

    // your inputs for the sake of a working example snippet
    String text = "K1234 T1234567";
    String query = "([A-Z]{1}[0-9]{4})((\\ ){1})([A-Z]{1}[0-9]{7})";
    String format = "\\4, \\1";
    
    // usual regex pattern matching
    Pattern pattern = Pattern.compile(query);
    Matcher matcher = pattern.matcher(text);
    matcher.find();
    
    // you need to tweak the format to use $ instead of \ for replacement
    String replacement = format.replaceAll("\\\\", "\\$");
    String result = matcher.replaceAll(replacement);
    
    // this outputs "T1234567, K1234"
    System.out.println(result);