gpt4 book ai didi

javascript - 如何捕获由特定单词分隔的字符串的不同 x 部分

转载 作者:行者123 更新时间:2023-11-30 13:54:54 24 4
gpt4 key购买 nike

考虑到这一点:

{
author={Diaz, Navarro David and Gines, Rodriguez Noe},
year={2006},
month=jul # "~12",
note={EP Patent 1,678,025}
}

我想匹配并捕获作者字段中由“和”分隔的不同名称组(在这种情况下:Diaz、Navarro David & Gines、Rodriguez Noe)可能出现超过 2 次

到目前为止regex如果前面有 'author={',则使用正后视会捕获 curl 中的所有内容,但我正在努力捕获满足上述条件的 2 个组。帮助! :)

(?<=author=\{)([^}]+)

最佳答案

最好的方法是抓取 author={ 之间的子串和 }并将第 1 组值拆分为 and整个单词:

var str = '{\n author={Diaz, Navarro David and Gines, Rodriguez Noe and Another, John Doe},\n year={2006},\n month=jul # "~12",\n note={EP Patent 1,678,025}\n}';
var m = /author={([^{}]*)}/.exec(str);
if (m) {
console.log(m[1].trim().split(/\s*\band\b\s*/));
}

如果您必须使用单个正则表达式来做到这一点,您应该以支持无限宽度后视的最新 ECMAScript 标准为目标。

以下代码将在当前的 Chrome 版本中运行:

var str = '{\n author={Diaz, Navarro David and Gines, Rodriguez Noe and Another, John Doe},\n year={2006},\n month=jul # "~12",\n note={EP Patent 1,678,025}\n}';
var rx = /(?<=author={[^{}]*?)(?<![^{\s])(?:(?!\band\b)[^{}])+\b(?<!\s)/g;
console.log(str.match(rx));

参见 regex demo

详情

  • (?<=author={[^{}]*?) - 如果在当前位置的左侧立即有 author={,则返回 true 的正后视。子字符串后跟除 { 以外的任何 0+ 个字符和 } , 越少越好
  • (?<![^{\s]) - 此外,如果当前位置的左侧除了空格或 { 之外没有其他字符,则仅匹配下一个模式( trim 左边的火柴)
  • (?:(?!\band\b)[^{}])+ - 除 { 以外的任何字符和 } , 出现 1 次或多次,不是一个完整单词的开始 and
  • (?<!\s) - 如果在当前位置的左侧没有空格( trim 右侧的匹配项),则返回 true 的负后视。

关于javascript - 如何捕获由特定单词分隔的字符串的不同 x 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57506081/

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