我有这个正则表达式\\s.*\\s|\\s
,它不允许我在字符串的开头或/和结尾有一个空格(可选,任意数量的空格)。
String regex = "\\s.*\\s|\\s";
System.out.println("Hello World".matches(regex)); -> FALSE
System.out.println(" Hello World ".matches(regex)); -> TRUE
System.out.println(" Hello World".matches(regex)); -> FALSE
System.out.println("Hello World ".matches(regex)); -> FALSE
请帮忙,告诉我在我的正则表达式中我出错的地方
答案 0 :(得分:0)
以下模式对我有用:
@Test
public void testRegex() {
final String regex = "\\s*.+\\s*";
assertTrue(Pattern.matches(regex, "Hello World"));
assertTrue(Pattern.matches(regex, " Hello World"));
assertTrue(Pattern.matches(regex, " Hello World "));
assertTrue(Pattern.matches(regex, "Hello World "));
assertTrue(Pattern.matches(regex, " "));
}
*字符匹配前面的值的0或更多,在本例中为空格(\ s)。因此,正则表达式的正面和结尾处的\ s *允许您在开头或结尾处使用可选的空格。的。匹配任何字符,+表示一个或多个,所以。+允许你的空格之间的中间。
正如您将注意到的,我的正则表达式“”是完全可以接受的匹配。为了更好地满足您的需求,我认为我们需要了解您的更多要求。