7

我想使用正则表达式在字符串中的特定单词之后立即找到该单词。例如,如果这个词是“我的”,

“这是我的祈祷”——祈祷

“这是我的书()”-书

是否可以使用正则表达式?

4

6 回答 6

8

正则表达式将是

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

\p{L}+是一个字母序列。这\p{L}是一个具有“字母”属性的 Unicode 代码点,因此它匹配任何语言的字母。

(?<=\bmy\s+)是一个后向断言,确保“我的”这个词在前面

于 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取自用户输入,

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 回答
0

“这是我的祈祷”

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

group2 结果将你的话“祈祷”

于 2013-01-18T09:29:42.923 回答