gpt4 book ai didi

php - 具有非捕获组的 REGEX 条件

转载 作者:搜寻专家 更新时间:2023-10-31 20:41:15 25 4
gpt4 key购买 nike

我有正则表达式:

([A-Za-z0-9_]+?)[ ]?(\()?(?(2)([A-Za-z0-9=\-\/°%= ]*)\))_([A-Za-z0-9]*)$
^
|
condition

它应该匹配以下内容:

name (unit)_type
name(unit)_type
long_name_type
name_type

问题是我有 4 个捕获组而不是 3 个:

[1] => Array
(
[0] => name
)

[2] => Array
(
[0] => (
)

[3] => Array
(
[0] => unit
)

[4] => Array
(
[0] => type
)

但是,当我将括号的捕获组更改为非捕获组时:

([A-Za-z0-9_]+?)[ ]?(?:\()?(?(2)([A-Za-z0-9=\-\/°%= ]*)\))_([A-Za-z0-9]*)$
^
|
here

它不起作用。

有机会得到这样的匹配吗?

[1] => Array
(
[0] => name
)

[2] => Array
(
[0] => unit
)

[3] => Array
(
[0] => type
)

编辑:在收到所有提示后,我将其简化为:

(\w+?) *(?:\(([A-Za-z0-9\/°%= -]*)\))?_([A-Za-z0-9]*)$

最佳答案

看起来您并不真的需要那个正则表达式条件。

为什么不简单地使用可选的非捕获组:

([A-Za-z0-9_]+?)[ ]?(?:\(([A-Za-z0-9=\-\/°% ]*)\))?_([A-Za-z0-9]*)$
^^^^ ^

regex101 demo

[注意:字符类中有 2 个 = 符号,我删除了其中一个,因为在字符类中使用两个是多余的]

关于php - 具有非捕获组的 REGEX 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079392/

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