Regex是一个ruby块参数和块内的所有实例
我一直在尝试开发一个正则表达式来匹配块的参数,然后匹配该参数的所有实例 使用此示例:Regex是一个ruby块参数和块内的所有实例,ruby,regex,sublimetext2,textmate,Ruby,Regex,Sublimetext2,Textmate,我一直在尝试开发一个正则表达式来匹配块的参数,然后匹配该参数的所有实例 使用此示例: File.open(inFile).each do |line| line.chomp! if line.empty? then next elsif line =~ /^>/ line.slice!(/>/) names.push(line) elsif line !~ /^>/ seqs.push(line)
File.open(inFile).each do |line|
line.chomp!
if line.empty? then
next
elsif line =~ /^>/
line.slice!(/>/)
names.push(line)
elsif line !~ /^>/
seqs.push(line)
end
end
我想在管道之间匹配单词,line
,然后匹配line
的所有实例
匹配参数很简单:
(?<=\|)(\w*?)(?=\|)
(?不要这样做。说真的。它不会可靠地工作,而且你将花费比手工修改更多的时间来校对和修复结果。如果你查看Ruby语言包的内部,看看哪些名称已经被分配了匹配项,你会发现第一部分已经完成:
name: variable.other.block.ruby
match: [_a-zA-Z][_a-zA-Z0-9]*
您可以使用该名称来引用块本地变量,可能是source.ruby.variable.other.block.ruby
。我不确定如何引用多参数列表的不同匹配项
我将保留对这个问题的否决票,因为你试图解析语言本身,而不是文件中的输入,这一点令人难以置信地不清楚。我同意,这并不理想。我将编辑我的帖子,解释我尝试的理由。谢谢glenn。考虑一下行
可能出现的所有上下文。现在所有位置end
可能出现,更不用说潜在的{}你试图在正则表达式中写一个Ruby语言解析器。除非你有一些非常简单的假设,否则你可能会因为你的特殊情况而变得毫无希望。谢谢你的评论。请考虑看编辑过的问题,它现在看起来与整个文档中的论点相匹配。“整个文件”可能会有很多其他的| x |
s。甚至可能只有一个块。所以我认为你并没有真正简化事情。你需要提供一些测试数据和预期输出来得到这个问题的好答案。预期输出在我的原始问题中明确说明。我没有看到任何,因此提出了请求。真的吗?“我想在管道之间匹配单词,line
,然后在块中匹配line
的所有实例,”这不是输出的示例,这是对输出的描述。