问题
把一段文字整理为页面代码是很常见的事情
这里需要把一整篇QA整理为页面代码
格式为:
1 2 3 4 5 6 7 8 | kula很棒吗? 他很棒 他有很多小弟 kula多好呢? 他对下属很好 他对群友很好 他对路人很好 |
因为答案可能有多行,所以要匹配比较麻烦
初次尝试
一开始想到的是:
前面加两个空行,然后使用模式匹配:
1 | \n\n(.+)(\n.+)+ |
但是发现后面有 + 的括号,只能匹配到多个匹配的最后一个
所以咨询过群友之后,只能分多个步骤来执行替换
最终方案
第一步
首先前面加两个空行
1 | \n\n(.+)((\n.+)+) |
1 2 3 4 5 6 | <QaItem> <Question>$1</Question> <Answer> $2 </Answer> </QaItem> |
第二步
需要把多行的答案,用 p 标签包起来
1 | ^([^<\s]+) |
1 | <p>$1</p> |
这里利用的就是,答案的若干行,是没有Tag包起来的,所以可以这么匹配
最终结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <QaItem> <Question>kula很棒吗?</Question> <Answer> <p>他很棒</p> <p>他有很多小弟</p> </Answer> </QaItem> <QaItem> <Question>kula多好呢?</Question> <Answer> <p>他对下属很好</p> <p>他对群友很好</p> <p>他对路人很好</p> </Answer> </QaItem> |