1. ホーム
  2. regex

[解決済み] Regex:"スペースまたは文字列の先頭 "と "スペースまたは文字列の末尾 "を指定する

2022-04-26 17:11:52

質問

あなたが "stackoverflow" をパターンマッチしようとしていると想像してください。

次のようにしたい。

 this is stackoverflow and it rocks [MATCH]

 stackoverflow is the best [MATCH]

 i love stackoverflow [MATCH]

 typostackoverflow rules [NO MATCH]

 i love stackoverflowtypo [NO MATCH]

を使用して両方のサイトにスペースがある場合、stackoverflowを解析する方法を知っている。

/\s(stackoverflow)\s/

文字列の先頭や末尾にある場合と同じです。

/^(stackoverflow)\s/

/\s(stackoverflow)$/

しかし、正規表現を使用して、"スペースまたは文字列の終わり"と"スペースまたは文字列の始まり"を指定するには、どうすればよいのでしょうか。

どのように解決するのですか?

以下のいずれかを使用することができます。

\b      #A word break and will work for both spaces and end of lines.
(^|\s)  #the | means or. () is a capturing group. 


/\b(stackoverflow)\b/

また、スペースをマッチに含めたくない場合は、lookbehind/aheadsを使用することができます。

(?<=\s|^)         #to look behind the match
(stackoverflow)   #the string you want. () optional
(?=\s|$)          #to look ahead.