Ruby Regexp:如何匹配部分字符串分隔一些单词

时间:2015-08-27 13:37:11

标签: ruby regex

我有这样一个字符串:

<span>test text 1</span> some text <span>test text 2<span>test text 3</span></span>

我想要检索第二种情况(在“一些文本”之后,使用嵌套范围),即<span>test text 2<span>test text 3</span></span>并匹配内部范围内的顶级范围和文本的文本:test text 2和{{1 (但不是test text 3

我的正则表达式:test text 1

但我明白了:

enter image description here

如何修复regexp以获取<span.*?>(.*?)<span.*?>(.*?)<\/span><\/span>test text 2匹配组并忽略第一个范围(不嵌套)?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案!

(?!<span.*<\/span>.*<span)<span.*?>(.*?)<span.*?>(.*?)<\/span><\/span>

效果很好

答案 1 :(得分:0)

这应该做:

s = "<span>test text 1</span> some text <span>test text 2<span>test text 3</span></span>"
matches = s.scan(/<span.*?>.*?<\/span.*?>/)
p matches[1] # "<span>test text 2<span>test text 3</span>"