我想知道是否有人可以帮我完成正则表达式。我试图匹配关键字(短语)后面的文本和句子末尾的句点。我很接近,但是,无论我尝试什么,总是包括那个时期。
这是我目前的位置:
phrase([^.]+?)\.
我知道我之后可能会做这样的事情:
string.replace(".","");
但是,我宁愿通过正则表达式做我需要的一切。有人能告诉我我错过了什么部分吗?
示例:
"The current phrase blah blah blah."
"blah blah blah"
"blah blah blah."
(包括期间。)答案 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 ).*?(?=\.)