gpt4 book ai didi

Java正则表达式用空格替换两侧带有空格的单个字母

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

谁能帮我用一个正则表达式来用空格替换所有单个字母。示例:

 input: "this is a t f with u f array"
output: "this is with array".

我的正则表达式是 replaceAll("(\\s+[a-z]\\s+)","");但它的工作原理如下:

  input: "this is a t f with u f array"
output: "this is t f with f array".

最佳答案

问题的发生是因为 replaceAll 的工作方式。每次替换一个部分后,它会开始查找匹配的部分,例如,当您的模式运行时,您会得到结果

this is t with f array

内部发生的事情是:

  1. 匹配模式“this is a t f with u f array”
  2. 在“t”找到匹配项
  3. 替换为“”。
  4. 开始匹配 最后一个匹配项(“f with u f array”)
  5. 注意“f”不匹配,因为没有前导空格。

你需要使用的是一个叫做“零宽度正先行”的技巧如果你使用模式:

(\\s+[a-z](?=\\s))

第二个空格表示“尝试匹配,但实际上不要将其视为匹配的一部分”。因此,当下一场比赛发生时,它将能够使用该空间作为其比赛的一部分。

您还需要替换为空字符串,因为未删除尾随空格,即

"this is a t f with u f array".replaceAll("(\\s+[a-z](?=\\s))","")

关于Java正则表达式用空格替换两侧带有空格的单个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5250801/

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