регулярное выражение сопоставления букв и цифр со знаками - PullRequest
0 голосов
/ 19 мая 2018

С PHP preg_match я пытаюсь сопоставить символы элемента как

  • K + => array( [0] => K+, [1] => K, [2] => +)

  • Cr7 + => array( [0] => Cr7+, [1] => Cr, [2] => 7+)

  • O2- => array( [0] => O2-, [1] => O, [2] => 2-)

Я придумал регулярное выражение

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

, ноэто не соответствует K+.Как я могу добавить условие ИЛИ к цифре тоже?

1 Ответ

0 голосов
/ 19 мая 2018

Вы можете сопоставить заглавную букву с дополнительными строчными буквами, обозначающими имя элемента, заканчивающееся цифрами или [-+] знаками, или оба, используя:

([A-Z][a-z]*)(\d*[-+]?)

RegEx live demo

PHP-код (см. Демонстрацию здесь ):

preg_match_all('~([A-Z][a-z]*)(\d*[-+]?)~', $str, $matches);

Вывод для предоставленного ввода:

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

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

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

)
...