我有这样一个字符串:
<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
但我明白了:
如何修复regexp以获取<span.*?>(.*?)<span.*?>(.*?)<\/span><\/span>
和test text 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>"