此前由於搞不懂js正則表達式中的「m」有何作用,因此在做「正則替換小工具」時,是把目標文本用\n分割之後,for循環逐個匹配的。
現在終於get到了正確的做法,默認加入「gm」這兩個flag,則可以使行首^行末$生效。
代碼量減少了很多,非常優雅。
如果要匹配每一行的第一個,則用以下方法:
^(.*?)使用,$1來玩
可以使每行第一個出現的「使用」替換成「來玩」。
對比前後代碼
之前的代碼:
let text_target_arr = tmp.split("\n");
let text_rst = "";
for (let x = 0; x < text_target_arr.length; x++) {
text_rst += text_target_arr[x].replace(rgvalue, replace_target);
if (x < text_target_arr.length - 1) {
let nmatch = text_target_arr[x].match(rgvalue);
if (replace_n || nmatch == null) {
text_rst += "\n";
}
}
}
tmp = text_rst;
改進後的代碼:
tmp = tmp.replace(rgvalue, replace_target)
確實非常優雅!