gpt4 book ai didi

regex - 匹配并删除括号模式内的所有空格

转载 作者:行者123 更新时间:2023-12-05 04:20:27 28 4
gpt4 key购买 nike

我想匹配字符串中每个 [[]] 内的所有空格,这样我就可以使用 replaceAll 方法并删除它们。

示例输入:text text [[ ia asd ]] [[asdasd]] dfgd dfaf sddgsd [[sss aaa]]

预期输出:text text [[iaasd]] [[asdasd]] dfgd dfaf sddgsd [[sssaaa]]

我想到了这个:\[\[(\s*?)\]\] 应该匹配双括号之间的所有空格,但它不匹配任何内容。

我还尝试了其他几种类似问题的解决方案,但似乎都没有用。

还有什么可以使用的线索吗?

最佳答案

考虑到它是Java,你可以使用

String result = text.replaceAll("(\\G(?!^)|\\[\\[)((?:(?!]]).)*?)\\s+(?=.*?]])", "$1$2")

或者,另一种方法是匹配 [[]] 之间的所有子字符串,然后删除匹配项中的所有空格:

String text = "text text [[ ia asd ]] [[asdasd]] dfgd dfaf sddgsd [[sss aaa]]";
Pattern p = Pattern.compile("\\[\\[.*?]]");
Matcher m = p.matcher(text);
StringBuffer buffer = new StringBuffer();
while(m.find()) {
m.appendReplacement(buffer, m.group().replaceAll("\\s+", ""));
}
m.appendTail(buffer);
System.out.println(buffer.toString());

参见 Java demo online .

第一个正则表达式表示:

  • (\G(?!^)|\[\[) - 第 1 组 ($1):[[ 或上一场成功的比赛结束
  • ((?:(?!]]).)*?) - 第 2 组 ($2):除换行符以外的任何字符,零个或多个但尽可能少的出现,不会启动 ]] 字符序列
  • \s+ - 一个或多个空格
  • (?=.*?]]) - 紧靠右边,除换行字符外,必须有零个或多个字符,尽可能少,然后是 ] ].

关于regex - 匹配并删除括号模式内的所有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74465558/

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