我的字符串分隔符是;.分隔符在字符串中转义为\;.例如,
irb(main):018:0> s = "a;b;;d\\;e"
=> "a;b;;d\\;e"
irb(main):019:0> s.split(';')
=> ["a", "b", "", "d\\", "e"]
Run Code Online (Sandbox Code Playgroud)
有人可以建议我正则表达式,所以分裂的输出将是["a", "b", "", "d\\;e"]?我正在使用Ruby 1.8.7
1.8.7没有Oniguruma(可以编译)没有负面的观察.
1.9.3; 好极了:
> s = "a;b;c\\;d"
=> "a;b;c\\;d"
> s.split /(?<!\\);/
=> ["a", "b", "c\\;d"]
Run Code Online (Sandbox Code Playgroud)
1.8.7与Oniguruma不提供一个简单的拆分,但你可以得到匹配偏移和拉开子的方式.我假设有一个更好的方法来做到这一点我不记得了:
> require 'oniguruma'
> re = Oniguruma::ORegexp.new "(?<!\\\\);"
> s = "hello;there\\;nope;yestho"
> re.match_all s
=> [#<MatchData ";">, #<MatchData ";">]
> mds = re.match_all s
=> [#<MatchData ";">, #<MatchData ";">]
> mds.collect {|md| md.offset}
=> [[5, 6], [17, 18]]
Run Code Online (Sandbox Code Playgroud)
其他选择包括:
;和后处理结果寻找尾随\\,或| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |