正则表达式匹配整个单词或短语

时间:2014-09-24 13:13:43

标签: c# regex string

我有以下输入:

Hewlett Packard LaserJet Printer Thingy

我需要以下输出:

LaserJet Printer Thingy

基于匹配的Hewlett Packard

我相信这是Regex的完美候选人(我可能错了),不幸的是,我的经验有限,但是一系列的字符串拆分和加入似乎很冗长。

我尝试过什么

return Regex.Replace(FullProductName, "\b" + ManufacturerName + "\b", string.Empty, RegexOptions.IgnoreCase);

我发现这不起作用,因为\b指的是单词边界,但这里有一个短语。

注意:有时可能是Sony或其他单字制造商名称。

2 个答案:

答案 0 :(得分:3)

您可以使用以下正则表达式来匹配制造商名称Hewlett Packard或任何其他单字制造商名称。用空字符串替换匹配的字符串将为您提供所需的输出。

正则表达式:

^(Hewlett Packard\s*|[A-Z][a-z]+\s*)

替换字符串:

Empty string

DEMO

<强>代码:

string str = @"Hewlett Packard LaserJet Printer Thingy
Sony LaserJet Printer Thingy";
string result = Regex.Replace(str, @"(?m)^(Hewlett Packard\s*|[A-Z][a-z]+\s*)", "");
Console.WriteLine(result);
Console.ReadLine();

IDEONE

答案 1 :(得分:2)

我认为你不需要正则表达式。只需StartsWithRemove即可。

string text = "Hewlett Packard LaserJet Printer Thingy";
string manufacturer = "Hewlett Packard";
if(text.StartsWith(manufacturer))
{
    var product =  text.Remove(0, manufacturer.Length).TrimStart();
    //TrimStart used for trimming leading spaces
}