【发布时间】:2013-01-18 09:18:27
【问题描述】:
我想使用正则表达式在字符串中的特定单词之后立即找到该单词。例如,如果这个词是“我的”,
“这是我的祈祷”——祈祷
“这是我的书()”-书
是否可以使用正则表达式?
【问题讨论】:
我想使用正则表达式在字符串中的特定单词之后立即找到该单词。例如,如果这个词是“我的”,
“这是我的祈祷”——祈祷
“这是我的书()”-书
是否可以使用正则表达式?
【问题讨论】:
正则表达式是
(?<=\bmy\s+)\p{L}+
\p{L}+ 是一个字母序列。 \p{L} 是 Unicode code point with the property“字母”,因此它匹配任何语言的字母。
(?<=\bmy\s+) 是一个后向断言,确保单词“my”在之前
【讨论】:
army surplus :)
你可以使用
my\s+\b(\w+)\b
这会捕获第一个子组中 my 之后的单词。
【讨论】:
使用前瞻 REGEX:
(?<=my )\b\w+\b
【讨论】:
对于my,使用以下正则表达式:
my (\w+)
【讨论】:
如果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
如果没有匹配,这将返回一个空字符串。
【讨论】:
“这是我的祈祷”
.* (my )(\D*)( ).*
group2 结果将是你的“祈祷”
【讨论】:
\D,它是“Not a digit”?数字与匹配的单词有什么关系?