[英]Regex to return the word before the match
我一直试图在比赛前提取这个词。 例如,我有以下句子:
“阿拉托纳是位于佐治亚州巴托县东南部的一个小镇。 ”
我想提取“Bartow”之前的词。
我尝试了以下正则表达式来提取该词:
\w\sCounty,
当我想要的只是 Bartow 这个词时,我得到的是“w County”。
任何帮助将不胜感激。 谢谢!
您可以使用此正则表达式前瞻在County
之前查找单词:
\w+(?=\s+County)
(?=\\s+County)
是一个积极的先行者,在当前比赛之前断言存在一个或多个空格,然后是单词County
。
如果您想避免前瞻,那么您可以使用捕获组:
(\w+)\s+County
并从匹配结果中提取捕获的组#1。
你的\\w\\sCounty,
正则表达式返回w County
因为\\w
匹配一个字母,数字或_
的单个字符。 它与整个单词不匹配。
要匹配1个或多个符号,您需要使用+
量词并捕获您需要提取的部分,您可以依赖捕获组 , (...)
。
因此,您可以通过仅使用(\\w+)
替换\\w
来修复模式,然后在获得匹配后访问Match.Groups[1].Value
。
但是,如果县名包含非字符号,如连字符, \\w+
将不匹配。 在这种情况下,匹配1个或多个非空白符号的\\S+
可能会成为更好的选择。
查看C#演示 :
var m = Regex.Match(s, @"(\S+)\s+County");
if (m.Success)
{
Console.WriteLine(m.Groups[1].Value);
}
查看正则表达式演示 。
您可以使用此正则表达式查找 Country 之前的单词
([\\w]*.?\\s+).?县
如果您想查找多个单词,只需在([\\w]*.?\\s+){3}.?County后面添加 {n}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.