gpt4 book ai didi

javascript - 正则表达式 : can't find right expression

转载 作者:行者123 更新时间:2023-11-27 22:36:01 25 4
gpt4 key购买 nike

我需要找到字符串的所有匹配项,例如:

{{ <text | default('<text or empty space>') }}

所以一个模式,其中 {{ | default('') }} 始终存在,例如:

{{ text1 | default('default for text1 value') }} 

我需要在同一行中匹配许多这些模式。我正在尝试(请参阅 here )

[\{]{2} (.*) [|]{1} default(.*) [\}]{2}

但它没有得到正确的匹配(只有一个匹配 2 个表达式)。有什么帮助吗?

最佳答案

请注意,.* 部分是贪婪的,会匹配尽可能多的符号。您可以使用惰性版本 .*?,但也需要一个 g 全局修饰符来使正则表达式引擎匹配多次。另外,我建议使用正则表达式文字表示法,因为正则表达式是静态的,并且不是从变量构建的。

var reg = /\{{2} (.*?) \| default(.*?) \}{2}/g;

请参阅regex demo

var reg = /\{{2} (.*?) \| default(.*?) \}{2}/g;

var text = "{{ text1 | default('text1 default') }} {{ text2 | default('text2 default') }}"

console.log(text.match(reg));

注意:您需要在循环中使用 RegExp#exec 来获取所有捕获的文本。

另一个注意事项:如果您的输入在您需要的文本之前可能有类似 {{ text}} 的内容,则 .*? 将会贪婪地运行。您需要将所有 .*? 替换为 (?:(?!\}{2}).)* 缓和的贪婪 token 。请参阅this demo .

关于javascript - 正则表达式 : can't find right expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39084412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com