在Ruby正则表达式中否定字符串

3
我正在寻找一种使用Ruby从URL列表中提取LinkedIn个人资料页面的方法。目前,我正在循环遍历这些URL并将其与以下正则表达式进行匹配:
/^http:\/\/.+\.linkedin.com\/(pub|in)/

然而,LinkedIn个人资料目录页面的URL如下:
http://www.linkedin.com/pub/dir

因此,我希望避免任何具有pub/dir路径的链接。我知道在Ruby正则表达式中可以否定字符类,例如[^abc]匹配任何不是abc的字符。是否有一种方法可以在字符串中实现相同的功能?即匹配除“dir”之外的任何字符序列?


URL列表的格式是什么?另外,看起来你忘记转义.com中的点了。 - Jostein
谢谢,我确实忘记转义那个点,但那不是问题所在。 - Richard Stokes
1个回答

8
你可以使用负向先行断言。类似于以下内容:

(?!not this)match this


(pub(?!\/dir)|in)

谢谢,那个方法很有效。在《Ruby程序设计语言》的正则表达式章节中找不到相关内容。 - Richard Stokes
在最新版本的《Ruby程序员指南》中,第一部分“Ruby的方面”中的第7章“正则表达式”下的“高级正则表达式”中,“控制回溯”有一个很好的介绍。 - pedz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接