如何仅在特定单词之后匹配行空白区域的开头

时间:2016-04-07 14:01:50

标签: regex

我想匹配行首的空白区域,但只有下一个单词是PATCH,PUT,POST或GET

    edit_user_registration GET     /users/edit(.:format)      registrations#edit
                           PATCH   /users(.:format)           registrations#update

在上面的情况下只有第二行的空格。我试过这个:

(^\s*)+(POST|GET|DELETE|PUT|PATCH|OPTIONS)

问题是,即使是" PATCH"单词,但想在#34; PATCH"。

之前只匹配空格

2 个答案:

答案 0 :(得分:2)

您可以改为使用前瞻:

^\s*(?=(?:POST|GET|DELETE|PUT|PATCH|OPTIONS)\b)

请参阅the regex demo

最后\b使模式仅与整个单词匹配。如果它不是您所需要的,您可以将其删除。

正向前瞻只检查模式是否与文本匹配并返回true或false,无论是失败还是传递,都不会消耗字符。

此外,(\s*)+一个或多个零个或多个空白符号)可以缩短为\s* 0+空白符号

答案 1 :(得分:0)

您可以使用:

^\s*(?=POST|GET|DELETE|PUT|PATCH|OPTIONS)

试试here

此正则表达式将匹配以匹配动词开头的行上的空字符串。如果您不想要此行为,请将*更改为+

^\s+(?=POST|GET|DELETE|PUT|PATCH|OPTIONS)