java - 正则表达式模式包含单个空格但没有前导或尾随空格?

标签 java regex trim

我正在尝试定义一个用户可以使用 Java 中的正则表达式输入系统的字符串。该字符串不应包含尾随、前导或双空格,但可以在整个字符串名称中包含多个空格。它应该只包含一组定义的其他字符,允许的字符集是 ([0-9a-zA-Z_\\+=\\(\\)<>]+)

有没有办法在字符串中定义没有尾随、前导或双空格,而不使用“\S”,因为这将允许任何字符?

我尝试使用替换双空格

String file1 = file.replaceAll("\\s{2,}", " ");有效,但是 file1.trim()

file1 = file1.replaceAll("^\\s+", "");
file1 = file1.replaceAll("\\s+$", "");

不替换尾随和前导空格。

最佳答案

您可以使用Pattern,就像@Stephan提到的那样。但是,如果你只想做一些非常简单的事情,我认为你基本上走在正确的轨道上......只需在replaceAll(..)之前做一个trim():-

public String clean(String s) {
    return s.trim().replaceAll("\\s{2}", " ");
}

@Test
public void testClean() throws Exception {
    assertEquals("A B", clean("  A  B"));
    assertEquals("A B", clean("A  B  "));
    assertEquals("A B", clean("A B"));
    assertEquals("A B C", clean("  A  B C  "));
}

关于java - 正则表达式模式包含单个空格但没有前导或尾随空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365039/

相关文章:

java - h :selectOneMenu change event with p:ajax

java - 在 Windows 命令行上运行在 IntelliJ 中创建的 Java 程序

java - Swing - 尝试从 JList 中删除项目时出现异常

C# 正则表达式。替换文本中的信用卡

java - 为什么 Matcher.find() 在 Matcher.lookingAt() 之后运行时返回 false?

python - regex.WORD 如何影响\b 的行为?

excel - VLOOKUP 返回 #N/A 尽管匹配存在 (=A1=B1 == "TRUE")

php trim 不起作用

python - 在Python中删除异常值并计算具有不同实际值数量的多列的修剪平均值

java - 我如何才能无异常(exception)地修复此逻辑语句错误?