gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:40 25 4
gpt4 key购买 nike

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

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

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

实现前两个字段很容易,但是第三个字段,这就是我想问的。我读过有关反向引用的内容,可以帮助我做到这一点,但对我来说并不是那么清楚。我的理解是,如果我写了\2,\1 (如屏幕截图中所示),那么它将抓取正则表达式中的第二个括号,然后添加一个逗号 + 一个空格,然后抓取正则表达式中的第一个括号,给出正确的最终结果。

<强>1。这是对的吗,还是我错过了什么?

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

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

最佳答案

你所拥有的看起来不错。您需要这样的东西来格式化结果:

// 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);

关于Java - 如何格式化正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com