Regex 用符号匹配字母和数字的正则表达式

Regex 用符号匹配字母和数字的正则表达式,regex,preg-match,Regex,Preg Match,使用PHP的preg_match,我尝试将元素符号匹配为 K+=>数组[0]=>K+,[1]=>K[2]=>+ Cr7+=>数组[0]=>Cr7+,[1]=>Cr,[2]=>7+ O2-=>阵列[0]=>O2-,[1]=>O[2]=>2- 我想出了一个 preg_match('/^[A-Za-z](\d[+|-])/', $str, $match); 但它与K+不匹配。如何向数字添加或添加条件?您可以在可选的小写字母后面匹配大写字母,表示以数字或[-+]符号结尾的元素名称,或使用以下两种符号:

使用PHP的preg_match,我尝试将元素符号匹配为

K+=>数组[0]=>K+,[1]=>K[2]=>+

Cr7+=>数组[0]=>Cr7+,[1]=>Cr,[2]=>7+

O2-=>阵列[0]=>O2-,[1]=>O[2]=>2-

我想出了一个

preg_match('/^[A-Za-z](\d[+|-])/', $str, $match);

但它与K+不匹配。如何向数字添加或添加条件?

您可以在可选的小写字母后面匹配大写字母,表示以数字或[-+]符号结尾的元素名称,或使用以下两种符号:

([A-Z][a-z]*)(\d*[-+]?)
PHP代码见演示:

所提供输入的输出:

Array
(
    [0] => Array
        (
            [0] => K+
            [1] => K
            [2] => +
        )

    [1] => Array
        (
            [0] => Cr7+
            [1] => Cr
            [2] => 7+
        )

    [2] => Array
        (
            [0] => O2-
            [1] => O
            [2] => 2-
        )

)
Array
(
    [0] => Array
        (
            [0] => K+
            [1] => K
            [2] => +
        )

    [1] => Array
        (
            [0] => Cr7+
            [1] => Cr
            [2] => 7+
        )

    [2] => Array
        (
            [0] => O2-
            [1] => O
            [2] => 2-
        )

)