gpt4 book ai didi

javascript - 没有中间表达式重复的正则表达式 (axb|cxd)

转载 作者:行者123 更新时间:2023-11-29 15:02:09 25 4
gpt4 key购买 nike

我只是不断地用这个碰壁,我无法解决它。我正在尝试获取一个执行为的正则表达式:

(axb|cxd)

除了在表达式中不重复 x(因为它是很长的编码匹配表达式)。这是针对一个大字符串进行测试的,我只需要匹配 x 来进行字符串替换,因此零宽度先行/后向是一个选项。有什么想法吗?

a、b、c 和 d 相当小,因此如果表达式更容易形成,它们可以重复。

提前致谢。

最佳答案

如果您真的不想在正则表达式中重复 x,则必须应用一些手动搜索逻辑。您可以使用正则表达式搜索 x,然后根据找到它的位置,查找它之前的 a 和它之后的 b 或它之前的 c 和它之后的 d。但是,这可能比在 Gabe 的回答中仅在正则表达式中重复它需要更多的工作。

例如,您可以这样做:

var re = /(a|c)x(b|d)/;
var matches = str.match(re);
if (matches) {
// exclude axd or cxb
if ((matches[1] + matches[2]).match(/ab|cd/)) {
// found axb or cxd
}
}

但是,老实说,似乎包含 x 两次并让正则表达式引擎为您完成肮脏的工作会更容易:

if (str.match(axb|cxd)) {
// found match
}

或者,如果将 x 放入字符串两次太麻烦,则使用 javascript 字符串数学自行构建正则表达式:

var x = "long complicated regex";
var re = new RegExp("a" + x + "b|c" + x + "d");
if (str.match(re)) {
// found match
}

关于javascript - 没有中间表达式重复的正则表达式 (axb|cxd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8264524/

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