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

标签 c# regex regex-lookarounds

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

“我的世界 - Xbox 360 版” future 混搭包和 Xbox One 更新已发布 - 国家视频游戏新闻

匹配

- 国家视频游戏新闻

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

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

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

- Xbox 360 版的 future 混搭包和 Xbox One 更新已发布 - 国家视频游戏新闻

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

最佳答案

为什么不直接以正常方式编写而不使用负前瞻?

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

关于c# - 使用正则表达式匹配连字符后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20941759/

相关文章:

C# 更改 FlowLayoutPanel 中控件的位置

javascript - 正则表达式在我的代码中似乎无法正常工作

regex - 字符串插值的奇怪错误

javascript - 如何使用否定前瞻(NOT lookbehind)来匹配在特定位置不包含给定子字符串的字符串?

python - 环视和非捕获组之间的功能区别?

java - Android 2.1 中的正则表达式负向预测

c# - 为什么 date.ToString() 随时间显示

c# - 尝试加载应用程序时出现以下错误。 - OwinStartupAttribute.FriendlyName 值

c# - 使用 HtmlAgilityPack 替换节点抛出奇怪的错误

c# - 路由,如果包含单词则匹配特定的url