首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式以查找一些.php文件

问正则表达式以查找一些.php文件
EN

Stack Overflow用户
提问于 2011-04-22 03:42:44
回答 3查看 1.7K关注 0票数 2

我正在尝试为爬虫创建一个排除正则表达式。我想索引出现在/archives/目录中的所有.php文件,而不是其他任何地方。因此,正则表达式应该匹配所有.php文件,除了那些位于/archives/目录中的文件(不管嵌套得多深)。因此,例如,它将索引

代码语言:javascript
复制
www.mysite.com/archives/123qwe/index.php 

但不是

代码语言:javascript
复制
www.mysite.com/123qwe/index.php

我相信这个正则表达式应该可以工作:(?<!\/archives\/.*)\.php$

但是,我不能使用<字符,因为我需要将正则表达式提交到web表单中,以便从输入中清除<。而使用&lt;会破坏正则表达式。因此,有没有其他方法可以在不需要<的情况下形成这个正则表达式

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-22 05:04:56

关于

代码语言:javascript
复制
(?!.*\/magazine\/)(?:^.*\.php$)

这是一个消极的向前看,而不是你的消极的回顾。如果字符串中没有/magazine/并且以.php结尾,则此正则表达式应匹配

这与您的方法非常相似,但没有<。

您可以在Regexr上的此处看到它的实际效果

票数 2
EN

Stack Overflow用户

发布于 2011-04-22 09:10:53

试试这个:

代码语言:javascript
复制
^www\.mysite\.com(?:/(?!archives/)[^/.]+)+\.php$

或者,更清楚地说:

代码语言:javascript
复制
^www\.mysite\.com
(?:
  /               # After consuming the `/`...
  (?!archives/)   # if the next name isn't `archives`...
  [^/.]+          # consume it. 
)+                # Repeat as needed.
\.php$

当您创建正则表达式时,如果您不确定如何继续,那么lookbehinds永远不应该是您使用的第一个工具。事实上,我倾向于将它们视为最后的手段。它们没有足够的用处来抵消它们引入的复杂性。

票数 2
EN

Stack Overflow用户

发布于 2011-04-22 04:54:55

你不能贪婪的在正则表达式中指定你想要存档吗?

代码语言:javascript
复制
^(\/archives\/.+?)\.php$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5749003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档