Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式来查找紧跟在特定单词之后的单词_C#_.net_Regex - Fatal编程技术网

C# 正则表达式来查找紧跟在特定单词之后的单词

C# 正则表达式来查找紧跟在特定单词之后的单词,c#,.net,regex,C#,.net,Regex,我想使用正则表达式在字符串中的特定单词之后立即查找该单词。例如,如果单词是“my” “这是我的祈祷”-祈祷 “这是我的书。”-书 是否可以使用正则表达式?对于my,请使用以下正则表达式: my (\w+) 你可以用 my\s+\b(\w+)\b 这将捕获第一个子组中my之后的单词。正则表达式将是 (?<=\bmy\s+)\p{L}+ (?如果my取自用户输入 static string GetWordAfter(string word, string phrase) { va

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

“这是我的祈祷”-祈祷

“这是我的书。”-书


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

对于
my
,请使用以下正则表达式:

my (\w+)
你可以用

my\s+\b(\w+)\b
这将捕获第一个子组中my之后的单词。

正则表达式将是

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

(?如果
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
如果没有匹配项,则返回空字符串。

“这是我的祈祷”


第2组结果是,您的单词“祈祷”将使用前瞻正则表达式:

(?<=my )\b\w+\b

(?+1;添加了一个单词边界,因此您不匹配
陆军剩余
:)您使用了许多不必要的组,好吧,但是为什么要使用
\D
,它不是一个数字?数字与匹配的单词有什么关系?
(?<=my )\b\w+\b