我正在寻找一个正则表达式(Java),它将在每个单词结束后附加'~'字符。
我的要求是:
请看我下面的例子:
Input: Hello World How* A1e Y?u
Output: Hello~ World~ How* A1e~ Y?u
我从论坛获得了帮助,可以实现它,但无法实现#2.
我的代码段:
pattern = ([^\\s][a-zA-Z0-9])(\\s|$);
pattern.matcher(searchTerm).replaceAll("$1~$2");
如果word有任何特殊字符,如何跳过追加操作? 请建议。
我建议使用
searchTerm = searchTerm.replaceAll("(?<!\\S)\\w++(?!\\S)", "$0~").replaceAll("\\s{2,}", " ").trim();
查看Java演示
详细信息
(?<;!\s)
-负向查找,确保当前位置之前有空白或字符串开头\w++
-1个或多个单词字符(?!\s)
-负向前看,确保当前位置后面有空白或字符串开头。$0
是整个匹配值。
.replaceAll(“\\s{2,}”,“”)
(对于常规空格,只需将\\s
替换为一个空格即可)部分将任意两个或多个空白字符“收缩”为一个空格,而.trim()
部分则对两端空格的结果进行修剪。