获取动态字符串的一部分

我有以下动态字符串:

[TITLE|prefix=a] [STORENAME|prefix=s|suffix=s] [DYNAMIC|limit=10|random=0|reverse=0]

我想从 [TITLE|prefix= a ] 中获取值a并从 [STORENAME|prefix=s|suffix= s ]中获取值s 。

为了获得 TITLE 的前缀值,我已经尝试过,result.match(/prefix=*\||\]/)但我没有得到我需要的东西。


肥皂起泡泡
浏览 148回答 3
3回答

慕哥9229398

[您可以从匹配大写字符 AZ开始。然后匹配|prefix,然后在一组中捕获您想要保留的内容。然后可选择匹配|suffix并使用另一个组来捕获您想要保留的内容。\[[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) {&nbsp; console.log(`key: ${m[1]}`)&nbsp; console.log(`value: ${m[2]}`)&nbsp; if (m[3] !== undefined) {&nbsp; &nbsp; console.log(`key: ${m[3]}`)&nbsp; &nbsp; console.log(`value: ${m[4]}`)&nbsp; }}如果[TITLE必须在左侧,您还可以使用带有无限量词的正后视来获得匹配项:(?<=\[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) {&nbsp; console.log(`key: ${m[1]}`)&nbsp; console.log(`value: ${m[2]}`)}

杨__羊羊

尝试以下:(?<=TITLE\|prefix=)[\w]+|(?<=[\w]+\|suffix=)[\w]+解释:TITLE|prefix= --> 将搜索文本“TITLE|prefix=”?<= --> 将取消选择它(?<=[\w]+|suffix=) --> 同样,将选择“suffix=”和它之前的任何内容,并将取消选择它[\w]+ --> 将选择“TITLE|prefix=”和“suffix=”之后的词

白衣染霜花

您可以尝试遵循正则表达式。(?<=prefix=).*?(?=]|\|)详情:(?<=prefix=): Lookbehind - 在字符之后匹配字符串prefix=.*?: 匹配尽可能少的任何字符(?=]|\|): 获取任何字符直到]或|我还尝试在 javascript 上运行代码。var string = "[TITLE|prefix=a] [STORENAME|prefix=s|suffix=s] [DYNAMIC|limit=10|random=0|reverse=0]";&nbsp; &nbsp;&nbsp;var res = string.match(/(?<=prefix=).*?(?=]|\|)/g);console.log(res);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript