找到最后一个"在字符串中"写作""

时间:2016-11-17 13:47:52

标签: ruby regex string sublime-text-plugin eviews

我试图写一个(Ruby)正则表达式来捕获关闭EViews字符串的双引号。在EViews中,字符串用双引号括起来并包含字符串中的实际双引号,我们写双引号:

myStr = "item1 item2 item3"
myStr2 = """item1"" ""item2"" ""item3"""

字符串可以出现在任何地方,所以我没有使用行的开头和结尾帮助。

到目前为止我所拥有的是:

((?<="")|(?<!"))(")(?!")

也就是说,找到一个双引号,前面带有两个双引号或没有双引号,并且没有双引号。这捕获了收盘双重报价,但遗憾的是也是开头报价。

在旁注中,我需要这个的原因是我正在使用描述Sublime Text 3的EViews语法的YAML文件。至于捕获字符串,这是我到目前为止所拥有的:

strings:
  - match: '"'
    scope: punctuation.definition.string.begin.eviews
    push: string

string:
  - meta_scope: string.quoted.double.eviews
  - match: '"' #((?<="")|(?<!"))(")(?!")
    scope: punctuation.definition.string.end.eviews
    pop: true

1 个答案:

答案 0 :(得分:0)

这个问题可能没有以最好的方式表达。我最终找到了一个可能有点笨拙的解决方案,但有效:

<label for="yes">Yes</label>
<input type="radio" id="yes" name="random"/>