gpt4 book ai didi

Javascript Regex 捕获组至少有 1 个非数字的两种形式 : delimited by space and enclosed in quotes

转载 作者:行者123 更新时间:2023-12-01 22:47:23 25 4
gpt4 key购买 nike

我正在尝试将 category_id 用于纯数值,这行得通。我还需要捕获 category_name。对于 category_name,我需要捕获直到空格或包含空格(如果它以双引号开头)。

示例用户输入字符串:

python c:192 c:1Stackoverflow c:"Stack Overflow2"

所需的捕获应该是 category_name 的这两个值和 category_id 的 192。

预期输出:

1Stackoverflow
Stack Overflow2

category_name 必须包含至少一个非数字,但可以全是字母,没有数字。

query partially works :

/c:(?<category_name>(?:")(?!\d+)[^"]+(?:")|(?!\d+)[^ ]+)/g

它不捕获输入 1Stackoverflow,但捕获引用的输入。我需要删除引号:

(x.groups?.[key] ?? '').replace(/^\"/, '').replace(/\"$/, '')

?!\d+ 试图避免与 category_id 的冲突,但似乎没有用。

如何在捕获中不使用引号并使用前导数字的情况下以两种形式(一个单词和引号分隔)捕获 category_name?

最佳答案

要在一个正则表达式中捕获所有 3 个命名组,请使用:

c:(?:(?<category_id>\d+\b)|("?)(?<category_name>(?:[^"\s]+|[^"]+))\2)

Updated RegEx Demo

正则表达式分解:

  • c: : 匹配 c:
  • (?: : 启动非捕获组
    • (?<category_id>\d+\b) : 命名捕获组 category_id匹配 1+ 个数字后跟单词边界
    • | : 或者
    • ("?) : 匹配 "或空字符串并在第 2 组中捕获
    • (?<category_name>[^"\s]+|[^"]+) : 命名捕获组 category_name匹配 1+ 个非空白和非双引号字符或 1+ 个不是双引号的字符
    • \2 :匹配与我们在第 2 组中捕获的相同文本,即 "或空字符串
  • ) : 结束非捕获组

关于Javascript Regex 捕获组至少有 1 个非数字的两种形式 : delimited by space and enclosed in quotes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75010784/

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