我想知道是否有办法找到一个模式,但将其限制在当前行.基本上,相当于/PATTERN但仅限于当前行,而不是整个文档.
我已经尝试了:s/PATTERN,但是从行中删除了模式并将光标放在行的开头,这根本不是我需要的.我希望你能在没有替换的情况下进行搜索......
我希望将它用于一个宏,以便将光标放在该模式的开头,就像你/PATTERN对整个文件一样,所以任何宏观友好的东西都会更好.
任何可能有想法的vim用户?
编辑:0/PATTERN在宏中可以满足我当前的需求,但我希望有更具体的方法来限制搜索.
答案:到目前为止,在这里发布了一些方法,但我现在最喜欢的方法是用Shift+V视觉方式选择当前行,然后/\%V仅在视觉选择中搜索.然后Shift+V再次关闭视觉模式.
我正在尝试使用Python中的正则表达式解析器来解析XML文档(这是一个有限的集合,所以正则表达式很好!),而且我无法正确匹配注释.
这些注释的格式是<!--This is a comment-->注释本身可以包含各种非字母数字字符(包括' - ')的形式
我想以这样的方式匹配它们,我将注释分解为以下标记:
<!--
This is a comment
-->
开始标记很容易获得,并且我成功地使用另一个正则表达式,但评论正则表达式本身变得过于贪婪并--从结束标记中抓取.我希望这个正则表达式能够获取不一定包含在注释中的字符串,所以它也应该能够<Tag>This is text</Tag>正确地返回This is text.
这是我目前用于文本的正则表达式:
[^<>]+(?!-->)
最终结果是This is a comment--,当我只是想让This is a comment我的其他正则表达式可以抓住-->.这个正则表达式适用于普通标签,但是,由于结束标签上存在'<'并且This is text从我之前的示例中正确返回.
我知道我不能正确地使用负向前瞻.我在这里做错了什么想法?我已经尝试过了[^<>]+(?=-->),但那不符合任何不是这种形式的评论(如普通标签).我认为(?!-->)当它看到那个模式时会停止匹配,但它看起来不像那样,只是继续匹配,直到它看到结束'>'.
为上下文发布一段代码:
xml_scanner = re.Scanner([
(r" ", lambda scanner,token:("INDENT", token)),
(r"<[A-Za-z\d._]+(?!\/)>", lambda scanner,token:("BEGINTAG", token)),
(r"<\/[A-Za-z\d._]+(?!\/)>", lambda scanner,token:("ENDTAG", token)),
(r"<[A-Za-z\d._]+\/>", lambda scanner,token:("INLINETAG", token)),
(r"<!--", lambda scanner,token:("BEGINCOMMENT", token)),
(r"-->", lambda scanner,token:("ENDCOMMENT", token)), …Run Code Online (Sandbox Code Playgroud) 我有一个供个人使用的脚本,它会刮掉一些网站以获取信息,直到最近它工作得很好,但似乎其中一个网站增加了它的安全性,我再也无法访问其内容了.
我正在使用带有请求的python和BeautifulSoup来抓取数据,但是当我尝试使用请求获取网站的内容时,我会遇到以下情况:
'<html><head><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"></head><iframe src="/_Incapsula_Resource?CWUDNSAI=9_4E402615&incident_id=133000790078576866-343390778581910775&edet=12&cinfo=4bb304cac75381e904000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 133000790078576866-343390778581910775</iframe></html>'
我做了一些研究,看起来这就是阻止我:http://www.robotstxt.org/meta.html
有什么方法可以说服网站我不是恶意机器人吗?这是一个我每天运行一次的脚本,只需要一点点来源,所以无论如何我都不是他们服务器的负担.只是有人用脚本让事情变得更容易:)
编辑:尝试切换到机械化并忽略robots.txt那样,但我没有得到403 Forbidden响应.我想他们已经改变了他们对刮擦的立场,还没有更新他们的TOS.是时候去B计划,不再使用网站,除非有人有任何其他想法.