用于调整空格的 Java 正则表达式

标签 java regex

我知道这是这些问题的混合体:trim whitespace from a string?Regex or way to replace multiple space with single space .

我知道可以将这两种解决方案结合起来:

String mystring = "   brains    T1*   C+   ";
mystring = mystring.trim().replaceAll("[ ]+", " ");

输出:大脑 T1* C+

但是我的问题:

是否可以将 trim 部分制作为单个正则表达式?

mystring.replaceAll("#regex");

最佳答案

是的,您可以:

mystring = mystring.replaceAll("^\\s+|(?<=\\s)\\s+|\\s+$", "");

Demo on ideone.

该表达式背后的想法是分别匹配初始空格和尾随空格(通过使用 ^\\s+\\s+$ 表达式),并通过在前瞻中使用它来“屏蔽”一个空格以防止删除。这是最有趣的一 block :(?<=\\s)\\s+ - 它说“匹配一个或多个空格,当它们前面恰好有一个空格时”。 (?<=\\s)与我们想要保留的空间相匹配; \\s+匹配“不需要的”。

关于用于调整空格的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24313835/

相关文章:

从 32 位 JDK 升级到 64 位 JDK

Java将数据与当前线程关联

javascript - 获取不在同一行的两个字符串之间的字符串,正则表达式

javascript - 删除以逗号分隔的数字之间的空格

javascript - 将字符串拆分为字母数字和其他字符

json - VIM:查找双引号中的所有数字并删除双引号

java - Wicket getPath 仅返回 id

java - Apache Camel : modify endpoint on redelivery

java - 在通过 Socket 接收数据时设置超时

asp.net - 正则表达式验证文本框至少需要两个单词