我想做的是确保某事之后以及下一件事之前都有一个空格,但中间也可以有单词
例如hello <word> goodbye
或hello goodbye
当我尝试在正则表达式中检查这一点时hellos+.*s+goodbye
这段代码的问题在于,如果在hello and goodbye中间没有一个单词,那么它将查找两个空格,然后将其视为没有看到正确的东西。
基本上,我试图确保有一个空格,只有一个空格,如果你好和再见之间有或没有一个词。
编辑:仍然习惯于正则表达式的严格定义。 问题还在于,有可能出现类似 helloabcdef <word> goodbye
或 hello <word> aksdjhsdflkhgoodbye
的东西,这些东西应该显示为 false
如果您只想匹配一个空格,那么为什么要将 s+
与量词一起使用?这将匹配 1 个或多个空格。您应该只使用s
.
现在至于您的问题,您可以使用此正则表达式来匹配这些字符串:
hellos(S+s)?goodbye
请注意 S+
的用法。这可确保捕获组仅在 2 个空格之间至少有一个非空格字符时匹配。使用 .
不起作用,因为它匹配任何字符,因此也会匹配空格。而且,如果您改用S*
,那么它也将匹配以下字符串:hellossgoodbye
.请注意,那里有 2 个空格。