如果字符串的开头没有出现,则不匹配正则表达式

时间:2015-01-15 15:43:38

标签: c# .net regex

我正在尝试编写一个正则表达式来匹配一个句子,正好用3个单词,每个单词之间有一个空格,中间单词是"是"。

例如,如果输入为

,则正则表达式应该匹配
"This is good"

如果输入字符串是

,则不应该匹配
"This this is good"

这就是我现在正在尝试的事情:

string text = "this is good";
string queryFormat = @"(?<pronoun>[A-Za-z0-9]+) is (?<adjective>[A-Za-z0-9]+)$";
Regex pattern = new Regex(queryFormat, RegexOptions.IgnoreCase);
Match match = pattern.Match(text);

var pronoun = match.Groups["pronoun"].Value; //Should output "this"
var adjective = match.Groups["adjective"].Value; //should output "good"

上面的正则表达式匹配字符串&#34;这很好&#34;

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您需要添加线锚的起点(^)。

string queryFormat = @"^(?<pronoun>[A-Za-z0-9]+) is (?<adjective>[A-Za-z0-9]+)$";

答案 1 :(得分:2)

^(?<pronoun>[A-Za-z0-9]+) is (?<adjective>[A-Za-z0-9]+)$

只需添加^开始锚点即可使其与3个字词严格匹配,而不是部分匹配。

^ assert position at start of a line

参见演示。

https://regex101.com/r/tX2bH4/18