Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式匹配连字符后的所有内容_C#_Regex_Negative Lookahead - Fatal编程技术网

C# 使用正则表达式匹配连字符后的所有内容

C# 使用正则表达式匹配连字符后的所有内容,c#,regex,negative-lookahead,C#,Regex,Negative Lookahead,我试图从新闻文章中提取标题。问题是新闻网站通常会在标题后面加上连字符和他们的公司名称,所以我试图制作一个正则表达式来匹配空格、连字符、空格以及其后的所有内容。例如: “Minecraft-Xbox 360版”未来混搭包和Xbox One更新发布-全国视频游戏新闻 火柴 -全国电子游戏新闻 我想让正则表达式匹配空格+连字符+空格和它后面的所有内容,前提是它后面的所有内容最多包含4个以大写字母开头的单词。我尝试使用否定前瞻排除以小写字母开头的单词: \s-\s?![a-z]+\s{3,}[a-z]+

我试图从新闻文章中提取标题。问题是新闻网站通常会在标题后面加上连字符和他们的公司名称,所以我试图制作一个正则表达式来匹配空格、连字符、空格以及其后的所有内容。例如:

“Minecraft-Xbox 360版”未来混搭包和Xbox One更新发布-全国视频游戏新闻

火柴

-全国电子游戏新闻

我想让正则表达式匹配空格+连字符+空格和它后面的所有内容,前提是它后面的所有内容最多包含4个以大写字母开头的单词。我尝试使用否定前瞻排除以小写字母开头的单词:

\s-\s?![a-z]+\s{3,}[a-z]+*

但它匹配空格、第一个连字符和其后的所有内容:

-Xbox 360版的未来混搭包和Xbox One更新发布-全国视频游戏新闻


我不知道该怎么办,有人能帮忙吗?

不使用正则表达式,只需使用字符串操作方法查找最后一个连字符并从中提取:

string title = "'Minecraft - Xbox 360 Edition' future mash up packs and Xbox One updates posted - National Video Game News";
string name = title.Substring(title.LastIndexOf("-") + 1).Trim();

Console.WriteLine(name); // "National Video Game News"

不使用正则表达式,只需使用字符串操作方法查找最后一个连字符并从中提取:

string title = "'Minecraft - Xbox 360 Edition' future mash up packs and Xbox One updates posted - National Video Game News";
string name = title.Substring(title.LastIndexOf("-") + 1).Trim();

Console.WriteLine(name); // "National Video Game News"

为什么不以正常的方式编写,而不进行消极的前瞻

\s-(\s[A-Z][a-z]+){0,4}$

为什么不以正常的方式编写,而不进行消极的前瞻

\s-(\s[A-Z][a-z]+){0,4}$
试试这个:

(?<Title>'[\w\s-\s\w]+')(?<Name>[\w\s]+)-(?<Publisher>[\s\w]+)
试试这个:

(?<Title>'[\w\s-\s\w]+')(?<Name>[\w\s]+)-(?<Publisher>[\s\w]+)

谢谢,我对regex很糟糕。谢谢,我对regex很糟糕。