Starcraft Replay Regex, проблемы с кронштейнами - PullRequest
1 голос
/ 20 мая 2011

[2v2] раса = [TPvZP] карта = [Monlyth Ridge] игроки = [игрок 1 (T) (w), игрок 2 (P) (L) против игрока 3 (Z) (W), игрок 4 (P) (W)] Длина = [00-10-06]

Работая на сайте Starcraft для TheLittleOne (профессиональный игрок), я изо всех сил пытаюсь найти регулярное выражение для следующей ситуации. [Скобки приводят к тому, что выражение регулярного выражения становится длинным.

Я хочу следующие укусы НАПРИМЕР) Тип игры: 2х2 Гонка: ТПвЗП Карта: Хребет Монлит Player1: Имя Player2: Имя Player3: Имя Player4: Имя Игрок 1-4: Гонка (P, T, Z, R) Игрок 1-4: победа (W, L) Продолжительность игры: 10 минут 6 секунд.

Я искал С.О. в течение нескольких дней, и я не могу найти решение.

1 Ответ

2 голосов
/ 20 мая 2011

Учитывая строку [2v2] race=[TPvZP] map=[Monlyth Ridge] players=[player 1(T)(w), player 2(P)(L) vs player3(Z)(W), player4(P)(W)] Length=[00-10-06],

~ ((\w*) \s*=\s*)? \[(.*?)\] ~ msx будет производить следующее:

"" => 2v2
race => TPvZP
map => Monlyth Ridge
players => player 1(T)(w), player 2(P)(L) vs player3(Z)(W), player4(P)(W)
Length => 00-10-06

, тогда применение ~ (.*?) \( (\w) \) \( (\w) \) \s* ,? \s* (vs)? ~ msx к players должно создать что-то вроде этого:

[2] => Array
    (
        [0] => T
        [1] => P
        [2] => Z
        [3] => P
    )

[3] => Array
    (
        [0] => w
        [1] => L
        [2] => W
        [3] => W
    )

этого достаточно для создания желаемой выходной строки.

...