2016-04-07 105 views
1

我想在該行的開頭匹配的白色空間,但只有下一個詞是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) 

問題是這將匹配即使是「打補丁」字,但要「補丁」之前只有空白匹配。

回答

2

您可以使用,而不是一個前瞻:

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

the regex demo

最後\b,使模式匹配單詞只作爲整個單詞。如果這不是你所需要的,你可以刪除它。

積極的超前檢查只是檢查模式是否匹配文本並返回true或false,或者失敗或傳遞,而不消耗字符。

另外,(\s*)+一個或多個零個或多個空格符號)可縮短至僅僅\s*0+空格符號)。

+0

@Tushar:我相信在這種情況下這不是必要的,但我總是更喜歡安全。 –

+0

適用\ b或不適用。 –

+1

不應該將'\ b'放在預見範圍內嗎? –

0

您可以使用此:

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

試試吧here

該正則表達式將匹配由匹配的動詞開始的行上的空字符串。如果你不希望這種行爲,改變*+

^\s+(?=POST|GET|DELETE|PUT|PATCH|OPTIONS) 
相關問題