Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex是一个ruby块参数和块内的所有实例_Ruby_Regex_Sublimetext2_Textmate - Fatal编程技术网

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
的所有实例,”这不是输出的示例,这是对输出的描述。