我一直在尝试开发一个正则表达式来匹配一个块的参数,然后是该参数的所有实例。
使用此示例:
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*?)(?=\|)
但我真的不确定如何将此匹配用作文档其余部分的模式。
欢迎任何关于如何进行的想法。
(编辑2:我现在不关心将正则表达式的范围限制在块中。我想匹配整个文档中的所有实例。请考虑重新检查这个更简单的问题。)
(编辑:我正在尝试将此正则表达式合并到textmate / sublime的tmLanguage
文件中。这样,参数和所有实例都是相同的颜色。我相信有一种方法可以构建一个插件要做到这一点,但我还没有尝试过,除了看看sublime插件bracketHighlighter
是如何工作的。)
答案 0 :(得分:2)
不要那样做。认真。它不会可靠地运行,并且您将花费更多时间来校对和修复结果,而不是手动进行更改。
答案 1 :(得分:0)
如果查看Ruby语言包并查看已经分配了哪些名称匹配,您会发现第一部分已经完成:
name: variable.other.block.ruby
match: [_a-zA-Z][_a-zA-Z0-9]*
您可以使用该名称来引用阻止本地变量,可能是source.ruby.variable.other.block.ruby
。我不确定你将如何引用多参数列表的不同匹配。
我将继续关注这个问题,因为你非常不清楚你是在试图解析语言本身,而不是文件中的输入。