gpt4 book ai didi

javascript - 包含可选子字符串的正确正则表达式匹配

转载 作者:行者123 更新时间:2023-11-28 16:24:23 27 4
gpt4 key购买 nike

我有以下一组字符串:

some_param[name] 
some_param_0[name]

我希望从中捕获some_param0name。我的正则表达式知识非常薄弱。我尝试了以下方法,但它不适用于这两种情况。

/^(\D+)_?(\d{0,2})\[?(.*?)\]?$/.exec("some_param_0[name]") //works except for the trailing underscore on "some_param"

正确的正则表达式是什么?

最佳答案

/^(\w+?)_?(\d{0,2})(?:\[([^\[\]]*)\])?$/

(\w+?) 使用 non-greedy quantifier捕获标识符部分,不带任何尾随 _

_? 是贪婪的,因此会击败前一部分中的 +?

(\d{0,2}) 将捕获 0-2 位数字。它是贪婪的,所以即使标识符和数字之间没有 _,它也会捕获数字。

(?:...)? 使方括号部分可选。

\[([^\[\]]*)\] 捕获本身不包含方括号的方括号部分的内容。

'some_param_0[name]'.match(/^(\w+?)_(\d{0,2})(?:\[([^\[\]]*)\])?$/)

生成一个数组,例如:

["some_param_0[name]",  // The matched content in group 0.
"some_param", // The portion before the digits in group 1.
"0", // The digits in group 2.
"name"] // The contents of the [...] in group 3.

请注意,非贪婪量词可能会与 \d{0,2} 中的有界重复发生奇怪的交互。

'x1234[y]'.match(/^(\w+?)_?(\d{0,2})(?:\[([^\[\]]*)\])?$/)

产量

["x1234[y]","x12","34","y"]

关于javascript - 包含可选子字符串的正确正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497781/

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