gpt4 book ai didi

javascript - 正则表达式组与空格匹配

转载 作者:行者123 更新时间:2023-11-29 19:11:53 24 4
gpt4 key购买 nike

我有一个简单的正则表达式问题,但我不知道如何解决它们。我有字符串(灰色,这是一个标签):

cccc:ddddd bbbb:fgggg aaa aa:ddd ddd cccc:ggggggg

和正则表达式

/(aaa aa|bbbb|cccc)+:([\sa-zA-Z]*)(?:$|\s)/ig

https://regex101.com/r/mR3vK5/1

解析字符串 'label' 后 aaa aa 被忽略,因为有空格并被带到第二个匹配项。我想在插入到下一个“标签”或结束行的第二个匹配项之后首先匹配标签(是否有空格)、冒号和任何内容(有空格)。

有什么建议吗?

最佳答案

如果你知道所有的键,你可以在积极的前瞻中使用它们并将值与惰性点匹配:

/(aaa aa|bbbb|cccc):(.*?)(?=$|\s+(?:aaa aa|bbbb|cccc))/gi

查看 JS 演示:

var block = "aaa aa|bbbb|cccc";
var rx = RegExp("(" + block + "):(.*?)(?=$|\\s+(?:" + block + "))", "ig");
var s = "cccc:ddddd bbbb:fgggg aaa aa:ddd ddd cccc:ggggggg";
while ((m = rx.exec(s)) !== null) {
document.body.innerHTML += m[1] + ": " + m[2] + "<br/>";
}

模式解释:

  • (aaa aa|bbbb|cccc) - aaa aa 之一或 bbbbcccc
  • : - 冒号
  • (.*?) - 第 2 组匹配 0+ 除换行符外的任何字符,尽可能少,直到第一个...
  • (?=$|\s+(?:aaa aa|bbbb|cccc)) -(限制 .*? 匹配的正面前瞻)
    • $ - ... 字符串结束
    • | - 或者...
    • \s+ - 一个或多个空格后跟...
      • (?:aaa aa|bbbb|cccc) - 三种备选方案中的任何一种(在仅用于分组而非捕获的非捕获组内)

关于javascript - 正则表达式组与空格匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275811/

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