7

正規表現を使用して、文字列内の特定の単語の直後にある単語を見つけたいです。たとえば、単語が「my」の場合、

「これは私の祈りです」 - 祈り

"これは私の本です()" - 本

正規表現を使用することは可能ですか?

4

6 に答える 6

8

正規表現は

(?<=\bmy\s+)\p{L}+

\p{L}+文字列です。はプロパティ「文字」を持つ Unicode コード ポイントであるため、どの言語の文字にも一致し\p{L}ます

(?<=\bmy\s+)後読みアサーションであり、「my」という単語が前にあることを保証します

于 2013-01-18T09:24:34.870 に答える
2

使用できます

my\s+\b(\w+)\b

これは、最初のサブグループの my の後の単語をキャプチャします。

于 2013-01-18T09:23:05.080 に答える
2

先読み REGEX を使用します。

(?<=my )\b\w+\b
于 2013-01-18T09:30:34.987 に答える
0

にはmy、次の正規表現を使用します。

my (\w+)
于 2013-01-18T09:22:10.977 に答える
0

「これが私の祈りです」

.* (my )(\D*)( ).*

group2 で結果はあなたの言葉「祈り」になります

于 2013-01-18T09:29:42.923 に答える
0

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

一致するものがない場合、これは空の文字列を返します。

于 2013-01-18T09:28:23.130 に答える