正则表达式匹配单词和句点

时间:2015-07-22 21:46:57

标签: c# regex

我想知道是否有人可以帮我完成正则表达式。我试图匹配关键字(短语)后面的文本和句子末尾的句点。我很接近,但是,无论我尝试什么,总是包括那个时期。

这是我目前的位置:

phrase([^.]+?)\.

我知道我之后可能会做这样的事情:

string.replace(".",""); 

但是,我宁愿通过正则表达式做我需要的一切。有人能告诉我我错过了什么部分吗?

示例:

  • 输入:"The current phrase blah blah blah."
  • 预期输出:"blah blah blah"
  • 当前输出:"blah blah blah."(包括期间。)

3 个答案:

答案 0 :(得分:0)

您需要使用正则表达式并从中获取Groups[1].Value

var s = "My phrase is here.";
var rx = new Regex(@"phrase([^.]+)\.");
Console.WriteLine(rx.Match(s).Groups[1].Value);

请参阅demo

或者使用look-behind重新编写正则表达式并使用rx.Match(s).Value访问所需的文本:

(?<=phrase)[^.]+

代码:

var rx = new Regex(@"(?<=phrase)[^.]+");
Console.WriteLine(rx.Match(s).Value);

请参阅regex demo

注意:后视耗费资源,我绝对更喜欢捕捉群体方法。

答案 1 :(得分:0)

var blahs = Regex.Match(input, @"phrase(.+?)\.").Groups[1].Value;

答案 2 :(得分:0)

Lookbehinds and lookaheads将允许您在其他文本之前/之后匹配文本,但不包括其他文本。在您的示例中,您需要(?<=The current phrase ).*?(?=\.)