Python 正则表达式 - 检查以确保某些内容有一个空格,但不是两个



我想做的是确保某事之后以及下一件事之前都有一个空格,但中间也可以有单词

例如hello <word> goodbyehello goodbye

当我尝试在正则表达式中检查这一点时hellos+.*s+goodbye

这段代码的问题在于,如果在hello and goodbye中间没有一个单词,那么它将查找两个空格,然后将其视为没有看到正确的东西。

基本上,我试图确保有一个空格,只有一个空格,如果你好和再见之间有或没有一个词。

编辑:仍然习惯于正则表达式的严格定义。 问题还在于,有可能出现类似 helloabcdef <word> goodbyehello <word> aksdjhsdflkhgoodbye 的东西,这些东西应该显示为 false

如果您只想匹配一个空格,那么为什么要将 s+ 与量词一起使用?这将匹配 1 个或多个空格。您应该只使用s .

现在至于您的问题,您可以使用此正则表达式来匹配这些字符串:

hellos(S+s)?goodbye

请注意 S+ 的用法。这可确保捕获组仅在 2 个空格之间至少有一个非空格字符时匹配。使用 . 不起作用,因为它匹配任何字符,因此也会匹配空格。而且,如果您改用S*,那么它也将匹配以下字符串:hellossgoodbye .请注意,那里有 2 个空格。

最新更新