Regexでこれを行う最良の方法はありますか?私はGavを検索している場合、Gavinと一致しないはずです。C#文字列に単語が存在するかを確認してください
私の正規表現のスキルが存在しないため、どのような例でも素晴らしい結果が得られます。
ありがとうございました
Regexでこれを行う最良の方法はありますか?私はGavを検索している場合、Gavinと一致しないはずです。C#文字列に単語が存在するかを確認してください
私の正規表現のスキルが存在しないため、どのような例でも素晴らしい結果が得られます。
ありがとうございました
はい、Regexは仕事に最適です。
ような何か:あなたが欲しい
string regexPattern = string.Format(@"\b{0}\b", Regex.Escape(yourWord));
if (Regex.IsMatch(yourString, regexPattern)) {
// word found
}
おそらくこのようなものです:
if (Regex.IsMatch(myString, @"\bGav\b")) { ... }
\ bの:正規表現中のSの、単語の境界を示す空白をIEや開始/終了文字列。必要に応じて、3番目のパラメータとしてRegexOptions.IgnoreCaseをスローすることもできます。正規表現の前の@記号は必須であることに注意してください。そうでなければ、\記号の二重の意味のために誤解されます。
それは間違って解釈されることはありません、パターンを別の方法で書く必要があります:@ "\ bGav \ b"は "\\ bGav \\ b"と同じです – Lucero
はい、まさにです。しかし、Regexのエスケープルールはそのままでは複雑であるため、慣習的な文字列リテラル(@ "..."))が正規表現を表現するのにはるかに優れていることがわかります。 C#の構文をミックスに投げ込むだけで、特にエスケープルールがほとんど同じでない他の環境に物をペーストしたい場合は、物事がより困難になります。 –
+1 Regex.Escape() – RichieHindle
オペレータが一致を大文字と小文字を区別するかどうかによって、RegexOptions.IgnoreCaseも追加できます。 – LukeH