gpt4 book ai didi

javascript - 给定开头和结尾的正则表达式可以获取字符串

转载 作者:行者123 更新时间:2023-11-28 14:51:15 25 4
gpt4 key购买 nike

我想构建一个具有 3 个参数的函数:

var function = searchMyRegex(begin_marker, end_marker, text) { ... }

我需要一个正则表达式,它会给我特定的字符串,给定开始和结束,但它将是最短的版本,这意味着开始和结束都不会在两个标记之间

例如

var text = "Lorem ipsum ipsum sit amet amet adipisicing elit"

如果BEGIN是ipsum并且END是amet,我想要返回ipsum sat amet,而不是ipsum ipsum sat阿梅特阿梅特

我尝试解决自己的问题的方式是这样的:

new RegExp(begin_marker + "[^" + end_marker + "]*\ " + end_marker);

但这似乎不起作用,我不确定为什么。

最佳答案

您可以使用这种构造:

ipsum(?:(?!ipsum).)*?amet

(?:(?!ipsum).)*? 检查 ipsum 之后和 amet 之前的每个位置是否不是开始另一个ipsum

使用非贪婪量词*?,匹配将在第一次出现amet 时停止。

<小时/>

请注意,先前的技术需要对每个位置执行前瞻测试。如果您处理长字符串,您还可以使用字符类来提高效率:

ipsum[^ia]*(?:i(?!psum)[^ia]*|a(?!met)[^ia]*)*amet

但是动态构建此模式不太容易。

<小时/>

当标记是单词(即以单词字符开头和结尾)时,您可以限制使用前瞻测试的位置数量,如下所示:

\bipsum\W+(?:(?!ipsum\b)\w+\W+)*?amet\b

前瞻仅在单词开头进行测试。这个可以很容易地动态构建。

关于javascript - 给定开头和结尾的正则表达式可以获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44419135/

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