检查字符串是否与Ruby中的正则表达式匹配的最快方法是什么?
我的问题是我必须通过一个庞大的字符串列表"egrep"来找到哪些是与运行时给出的正则表达式相匹配的字符串.我只关心字符串是否与正则表达式匹配,而不是它匹配的位置,以及匹配组的内容是什么.我希望这个假设可以用来减少我的代码花费匹配正则表达式的时间.
我加载正则表达式
pattern = Regexp.new(ptx).freeze
Run Code Online (Sandbox Code Playgroud)
我发现它string =~ pattern比...稍快string.match(pattern).
还有其他技巧或捷径可以用来使这项测试更快吗?
是否有可能改变Vim命名交换/备份/撤消文件的方式?
为了避免混乱,我在我的设置选项中~/.vimrc转储这些文件~/.vim/tmp/{swap,backup,undo}; 但是,由于我经常使用相同的名称编辑不同目录中的文件,因此我经常会遇到许多其他难以区分的文件,而Vim有时无法恢复.
理想情况下,我想%path%to%file.undo对所有这些辅助文件使用持久性undo has()的命名方案; 没有明显的设置方法,但可以用Buf{Read,Write}宏来完成吗?
目前使用git分支创建的最佳实践是为了测试错误的解决方案并且尚未合并,因为审核流程显示错误或有更好的问题解决方案?
一个例子.项目fizzbuzz有一个错误报告,报告空字段崩溃.
handle-empty-fields并对该分支进行了两次提交,"解决"了这个问题.现在handle-empty-fields我的代码中的代码是无用的:它不正确,不能再应用于代码,但它已在该错误报告中引用.
我该怎么办?保持分支?我会很快结束几十个被遗弃的分支,而git无法将分支标记为已废弃或已关闭.删除分支?但是那些查看该错误报告的人会发现它并获得404.
通常建议人们不要重新设置他们的存储库,因为这会给其他开发人员带来问题,尤其是下游开发人员.对功能或错误修复分支有什么建议?
更新:看起来github永远不会删除pull请求中包含的提交.因此,如果您推送更改并将其转换为拉取请求,则可以稍后删除该分支而不会丢失任何更改.好吧,虽然github还在工作;).
我的seeds.rb文件变得非常大.重构文件中数据的最佳方法是什么?
我可以将数据放入文件require中的各种文件中seeds.rb吗?
是否有解决当前对象实例的解决方案?
我正在寻找一些看起来像的东西:
class KillMe {
    ....
    public void destroy() {
        this.getObject = null //this is only for demonstrate my idea
    }
    ....
}
Run Code Online (Sandbox Code Playgroud) 是否有标准的应用程序返回代码集?比如返回0表示成功1表示失败,然后等等?
我有一个Windows Server应用程序,我正在添加一些返回错误代码,并希望坚持标准代码,除了我将需要的应用程序特定的代码.
我正在构建一个爬虫,我知道如何使用ruby mechanize使用以下代码从网上读取页面:
require 'mechanize'
agent = Mechanize.new
agent.get "http://google.com"
Run Code Online (Sandbox Code Playgroud)
但我可以使用Mechanize从文件系统中读取HTML文件吗?怎么样?
我想转换以下文字
This is a , here is another 
Run Code Online (Sandbox Code Playgroud)
成
This is a , here is another 
Run Code Online (Sandbox Code Playgroud)
换句话说,我想找到括在括号中的所有图像路径(文本采用Markdown语法),并用其他路径替换它们.包含新路径的字符串由单独的real_path函数返回.
我想String#gsub在它的块版本中使用它.目前我的代码如下所示:
re = /!\[.*?\]\((.*?)\)/
rel_content = content.gsub(re) do |path|
    real_path(path)
end
Run Code Online (Sandbox Code Playgroud)
这个正则表达式的问题在于它将匹配而不仅仅是foto.jpeg.我也试过其他regexen,(?>\!\[.*?\]\()(.*?)(?>\))但无济于事.
我目前的解决方法是拆分路径并稍后重新组装.
是否有一个Ruby正则表达式只匹配括号内的路径而不是所有上下文所需的字符?
答案后更新:这里的主要问题是Ruby的regexen没有办法指定零宽度的lookbehinds.最通用的解决方案是将regexp之前的部分和实际匹配部分之后的部分分组,即/(pre)(matching-part)(post)/,然后重建完整的字符串.
在这种情况下,解决方案将是
re = /(!\[.*?\]\()(.*?)(\))/
rel_content = content.gsub(re) do
    $1 + real_path($2) + $3
end
Run Code Online (Sandbox Code Playgroud) 如何添加Nokogiri::XML::Element到正在创建的XML文档Nokogiri::XML::Buider?
我目前的解决方案是序列化元素并使用该<<方法让Builder重新解释它.
orig_doc = Nokogiri::XML('<root xmlns="foobar"><a>test</a></root>')
node = orig_doc.at('/*/*[1]')
puts Nokogiri::XML::Builder.new do |doc|
    doc.another {
        # FIXME: this is the round-trip I would like to avoid
        xml_text = node.to_xml(:skip_instruct => true).to_s
        doc << xml_text
        doc.second("hi")
    }
end.to_xml
# The expected result is
#
# <another>
#    <a xmlns="foobar">test</a>
#    <second>hi</second>
# </another>
Run Code Online (Sandbox Code Playgroud)
然而,这Nokogiri::XML::Element是一个非常大的节点(以千字节和数千个节点的顺序),并且此代码处于热门路径中.分析表明序列化/解析往返非常昂贵.
如何指示Nokogiri Builder将现有XML元素添加node到"当前"位置?
我即将写一个RSS-feed fetcher并遇到一些charset问题.
与编码相比,加载和解析订阅源非常简单.我正在加载Feed,http.get我将每个数据事件放在一起.后来我用npm-lib解析整个字符串,feedparser它对给定的字符串工作正常.
可悲的是我已经习惯了像utf8_encode()php 这样的函数,我在node.js中错过了它们,所以我坚持使用当前没有做我想要的Iconv.
没有编码,有几个utf8?-icons用于错误的字符集,用iconv,字符串被解析错误:/
目前我正在单独编码每个字符串:
//var encoding ? ISO-8859-1 etc. (Is the right one, checked with docs etc.)
// Shortend version
var iconv = new Iconv(encoding, 'UTF-8');
parser.on('article', function(article){
    var object = {
        title : iconv.convert(article.title).toString('UTF-8'),
        description : iconv.convert(article.summary).toString('UTF-8')
    }
    Articles.push(object);
});
Run Code Online (Sandbox Code Playgroud)
我应该使用数据缓冲区开始编码还是稍后使用完整的字符串?
谢谢!
PS:编码是通过解析xml的头来确定的
如何在node.js中进行编码的模块更容易?