我在网上某处看到了这段代码:
ruby -pe 'gsub /^\s*|\s*$/, ""'
Run Code Online (Sandbox Code Playgroud)
显然,这段代码从STDIN的每一行中删除了前导和尾随空格.
我理解正则表达式和替换,没问题,但我没有得到的是该方法如何gsub接收一个对象来采取行动.我明白这个-p标志将整个事情包裹在一个while gets; print; ... ; end块中,但是如何gsub接收字符串来处理呢?至少,不应该是一个$_.gsub(..)相反?如何将当前输入行"神奇地"传递给gsub?
这些类似Perl的单行代码是否以稍微不同的方式解释?我正在寻找与传统的基于脚本的Ruby代码的差异的一般概念.我很害怕,还没有找到一套全面的资源.
这最近令我感到困惑,我似乎无法在任何地方找到合适的解释.
如果我运行使用查询API构建的查询,它可以很好地工作.
TermQuery sourceQuery = new TermQuery(new Term("source", "CNN"));
Run Code Online (Sandbox Code Playgroud)
运行results = searcher.search(sourceQuery, 30)和检查results.totalHits显示值为159.
但是,在同一个程序中,我设置了一个QueryParser(我的默认字段被调用text):
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
QueryParser parser = new QueryParser(Version.LUCENE_35,
"text", analyzer);
Run Code Online (Sandbox Code Playgroud)
并输入命令行查询
source:CNN
Run Code Online (Sandbox Code Playgroud)
我没有结果.在Luke 上运行此命令确实给了我一个结果.有谁知道发生了什么?