C# Regex返回匹配前的单词
比赛前我一直在试着提取这个词。例如,我有以下句子: 阿拉图纳是位于佐治亚州巴托县最东南部的一个城镇。 我想提取“Bartow”之前的单词 我尝试了以下正则表达式来提取该单词:C# Regex返回匹配前的单词,c#,regex,C#,Regex,比赛前我一直在试着提取这个词。例如,我有以下句子: 阿拉图纳是位于佐治亚州巴托县最东南部的一个城镇。 我想提取“Bartow”之前的单词 我尝试了以下正则表达式来提取该单词: \w\sCounty, 我得到的回报是“w县”,而我想要的只是巴托这个词 如蒙协助,将不胜感激。谢谢 您可以使用此正则表达式进行前瞻,以在县之前查找单词: \w+(?=\s+County) (?=\s+country)是一个正向前瞻,它断言在当前匹配之前存在一个或多个空格,后跟单词country 如果要避免前瞻,则可
\w\sCounty,
我得到的回报是“w县”,而我想要的只是巴托这个词
如蒙协助,将不胜感激。谢谢 您可以使用此正则表达式进行前瞻,以在
县之前查找单词
:
\w+(?=\s+County)
(?=\s+country)
是一个正向前瞻,它断言在当前匹配之前存在一个或多个空格,后跟单词country
如果要避免前瞻,则可以使用捕获组:
(\w+)\s+County
并从匹配结果中提取捕获的组#1。您的
\w\sconty,
regex返回w country
,因为\w
匹配的单个字符是字母、数字或
。它与整个单词不匹配
要匹配1个或多个符号,您需要使用+
量词,要捕获需要提取的部分,您可以依靠捕获组,(…)
因此,只需将\w
替换为(\w+)
,然后在获得匹配后,访问匹配.Groups[1]。值即可修复模式
但是,如果县名称包含非单词符号,如连字符,\w+
将与之不匹配。在这种情况下,\S+
匹配1个或多个非空白符号可能是更好的选择
见a:
见a。我想你指的是“郡”之前的词,恰巧是“巴托”。
var m = Regex.Match(s, @"(\S+)\s+County");
if (m.Success)
{
Console.WriteLine(m.Groups[1].Value);
}