RegExp大哉問! 一起跟大家燒燒腦
var string = `
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="/static/styles.css">
`
將 href=" (非 href="/ 開頭) 的路徑加入/home
string.replaceAll(????, ???)
最終結果要
<link rel="stylesheet" href="/home/styles.css">
<link rel="stylesheet" href="/static/styles.css">
求求大神們解惑!
不會 JS,只會 Python
import re
string = """
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="/static/styles.css">
"""
pattern = '(href=")([^\/])'
replacement = '\g<1>/home/\g<2>'
sub_string = re.sub(pattern, replacement, string)
print(sub_string)
# sub_string
<link rel="stylesheet" href="/home/styles.css">
<link rel="stylesheet" href="/static/styles.css">
用 ()
分成兩個 group,第二個 group 條件為 字元非/
,最後兩個 group 之間插入 /home/
新增亂刻的 JS: (2022-08-10 16:53:29)
var string = `
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="/static/styles.css">
`
console.log(string.replaceAll(/(href=")([^/])/g, "$1/home/$2"));
<link rel="stylesheet" href="/home/styles.css">
<link rel="stylesheet" href="/static/styles.css">
akitect 的答案已經可以做到。不過發問看起來像是作業,老師想要的答案比較可能會是這個:
string.replaceAll(/href="(?!\/)/g, 'href="/home/');
(?! 這個語法是看看後面接的字是什麼。有符合才算整個RE符合。