正規表現を使用して、文字列内の特定の単語の直後にある単語を見つけたいです。たとえば、単語が「my」の場合、
「これは私の祈りです」 - 祈り
"これは私の本です()" - 本
正規表現を使用することは可能ですか?
正規表現は
(?<=\bmy\s+)\p{L}+
\p{L}+
文字列です。はプロパティ「文字」を持つ Unicode コード ポイントであるため、どの言語の文字にも一致し\p{L}
ます。
(?<=\bmy\s+)
後読みアサーションであり、「my」という単語が前にあることを保証します
使用できます
my\s+\b(\w+)\b
これは、最初のサブグループの my の後の単語をキャプチャします。
先読み REGEX を使用します。
(?<=my )\b\w+\b
にはmy
、次の正規表現を使用します。
my (\w+)
「これが私の祈りです」
.* (my )(\D*)( ).*
group2 で結果はあなたの言葉「祈り」になります
my
ユーザー入力から取得した場合、
static string GetWordAfter(string word, string phrase)
{
var pattern = @"\b" + Regex.Escape(word) + @"\s+(\w+)";
return Regex.Match(phrase, pattern, RegexOptions.IgnoreCase).Groups[1].Value;
}
...
string wordAfterMy = GetWordAfter("my", "this is my book()"); // gives book
一致するものがない場合、これは空の文字列を返します。