输入是 html 文件,但所有的<和> 都是 <
和 >
,希望把 <
和 >
替换成<和>
源码只有一句替换的语句,暴露的接口就是一次 replace 操作的 RegExp Pattern,RegExp Options,RegExp Replacement 三个字段,也就是只能填写这三个字段,不能替换两次那样,需要一次完成,源码是 ruby 的 regexp。
不知道我有没有说清楚,有思路的大佬可以帮忙看看,谢谢
1
geelaw 2019-04-21 22:14:18 +08:00
假设你的输入是 well-structured,那么在第一个能被理解为小于号的 < 之前必须有一个 <,最后一个能被理解为大于号的 > 之后必须有一个 >,于是你可以考虑如下正则表达式、选项和替换项
/(?<=(<).*?)<|>(?=.*?(>))/m MULTILINE \1\2 当然,想要在实际中用这种方法达成目的的人多半是有毛病的。 |
2
geelaw 2019-04-21 22:20:40 +08:00
Ugh, 看了一下 Ruby 的文档,你可以给 replacement 设置一个函数,这样的话是平凡的,而且可以处理完全没有 <> 的情况。(我理解的题目是说想把里面本来就该 escape 的东西替换成 <>,而不是整个文件都 escape 过了;后面这种情况只能用传入非字符串的方式解决。)
|
4
SuperMonster009 2019-04-21 22:40:43 +08:00 via Android 1
str.replace(/(?:<)(.*?)(?:>)/g, "<$1>")
但这样会误伤 |
6
lzhd24 2019-04-21 22:56:37 +08:00 via Android
问题在于是不是需要把所有的 < 和 > 都替换成<和>,如果是 4 楼就是答案。
|
7
livc OP @SuperMonster009 #4 这个可以的,谢谢!
@geelaw #5 哦哦明白啦,其实 html 前后的<>也是<>,我先用四楼的方法。anyway 谢谢大佬。 @lzhd24 #6 对的,谢谢。 |