3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
[您可以從匹配大寫字符 AZ開(kāi)始。然后匹配|prefix,然后在一組中捕獲您想要保留的內(nèi)容。
然后可選擇匹配|suffix并使用另一個(gè)組來(lái)捕獲您想要保留的內(nèi)容。
\[[A-Z]+\|(prefix=)([^\]|]+)(?:\|(suffix=)([^\]|]+))?]
const regex = /\[[A-Z]+\|(prefix=)([^\]|]+)(?:\|(suffix=)([^\]|]+))?]/g;
const str = `[TITLE|prefix=a] [STORENAME|prefix=s|suffix=s] [DYNAMIC|limit=10|random=0|reverse=0]`;
let m;
while ((m = regex.exec(str)) !== null) {
console.log(`key: ${m[1]}`)
console.log(`value: ${m[2]}`)
if (m[3] !== undefined) {
console.log(`key: ${m[3]}`)
console.log(`value: ${m[4]}`)
}
}
如果[TITLE必須在左側(cè),您還可以使用帶有無(wú)限量詞的正后視來(lái)獲得匹配項(xiàng):
(?<=\[TITLE\|.*)(prefix=|suffix=)([^|\]*])
const regex = /(?<=\[TITLE\|.*)(prefix=|suffix=)([^|\]*])/g;
const str = `[TITLE|prefix=a] [STORENAME|prefix=s|suffix=s] [DYNAMIC|limit=10|random=0|reverse=0]`;
let m;
while ((m = regex.exec(str)) !== null) {
console.log(`key: ${m[1]}`)
console.log(`value: ${m[2]}`)
}

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
嘗試以下:
(?<=TITLE\|prefix=)[\w]+|(?<=[\w]+\|suffix=)[\w]+
解釋:
TITLE|prefix= --> 將搜索文本“TITLE|prefix=”
?<= --> 將取消選擇它
(?<=[\w]+|suffix=) --> 同樣,將選擇“suffix=”和它之前的任何內(nèi)容,并將取消選擇它
[\w]+ --> 將選擇“TITLE|prefix=”和“suffix=”之后的詞

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以嘗試遵循正則表達(dá)式。
(?<=prefix=).*?(?=]|\|)
詳情:
(?<=prefix=)
: Lookbehind - 在字符之后匹配字符串prefix=
.*?
: 匹配盡可能少的任何字符(?=]|\|)
: 獲取任何字符直到]
或|
我還嘗試在 javascript 上運(yùn)行代碼。
var string = "[TITLE|prefix=a] [STORENAME|prefix=s|suffix=s] [DYNAMIC|limit=10|random=0|reverse=0]";
var res = string.match(/(?<=prefix=).*?(?=]|\|)/g);
console.log(res);
添加回答
舉報(bào)