C# 使用正则表达式匹配连字符后的所有内容
我试图从新闻文章中提取标题。问题是新闻网站通常会在标题后面加上连字符和他们的公司名称,所以我试图制作一个正则表达式来匹配空格、连字符、空格以及其后的所有内容。例如: “Minecraft-Xbox 360版”未来混搭包和Xbox One更新发布-全国视频游戏新闻 火柴 -全国电子游戏新闻 我想让正则表达式匹配空格+连字符+空格和它后面的所有内容,前提是它后面的所有内容最多包含4个以大写字母开头的单词。我尝试使用否定前瞻排除以小写字母开头的单词: \s-\s?![a-z]+\s{3,}[a-z]+* 但它匹配空格、第一个连字符和其后的所有内容: -Xbox 360版的未来混搭包和Xbox One更新发布-全国视频游戏新闻C# 使用正则表达式匹配连字符后的所有内容,c#,regex,negative-lookahead,C#,Regex,Negative Lookahead,我试图从新闻文章中提取标题。问题是新闻网站通常会在标题后面加上连字符和他们的公司名称,所以我试图制作一个正则表达式来匹配空格、连字符、空格以及其后的所有内容。例如: “Minecraft-Xbox 360版”未来混搭包和Xbox One更新发布-全国视频游戏新闻 火柴 -全国电子游戏新闻 我想让正则表达式匹配空格+连字符+空格和它后面的所有内容,前提是它后面的所有内容最多包含4个以大写字母开头的单词。我尝试使用否定前瞻排除以小写字母开头的单词: \s-\s?![a-z]+\s{3,}[a-z]+
我不知道该怎么办,有人能帮忙吗?不使用正则表达式,只需使用字符串操作方法查找最后一个连字符并从中提取:
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很糟糕。