Ruby与正则表达式分裂 – 正则表达式没有做我想要的
我有这个字符串
string = "para1
para2
para3
"
我想分开para2文本,以便我得到这个
["para1
", "para3
"]
问题是有时para2可能不会被包装在p标签中(并且p外部和内部可能有可选空格)。 我认为这样做会:
string.split(/\s*()?\s*para2\s*()?\s*/)
但是,我明白了:
["para1
", "", "
", "para3
"]
它不是将开始和结束p标记拉入匹配模式 – 它们应该作为拆分的一部分被删除。 默认情况下Ruby的正则表达式是贪婪的,所以我认为它们会被拉入。而且,如果我执行gsub而不是拆分,这似乎得到了证实:
string.gsub(/\s*()?\s*para2\s*()?\s*/, "XXX") => "
para1
XXXpara3
"
他们被拉进来并摆脱了这里,但不是分裂。 任何人的想法?
谢谢,最大
用非捕获组(?:…)
替换捕获组(…)
(?:…)
:
/\s*(?:)?\s*para2\s*(?:<\/p>)?\s*/