Поиск и замена регулярных выражений в Sublime Text

У меня есть массив в Sublime Text с каждым городом в США в качестве значения и кодом, который включает аббревиатуру штата в качестве ключа. Это выглядит примерно так:

$array = array(
  "United States of America" => array(
        "USAK0001" => "Adak",
        "USAK0002" => "Adak Island",
        "USAK0003" => "Akiachak",
        "USAK0004" => "Akiak",
        "USAK0005" => "Akutan",
        "USAK0006" => "Alakanuk",
        "USAK0007" => "Aleknagik",
        "USAK0008" => "Allakaket",
        "USAL0028" => "Arlington",
        "USAL0029" => "Ashford",
        "USAL0030" => "Ashland",
        "USAL0031" => "Ashville",
        "USAL0032" => "Athens",
        "USAL0033" => "Atmore",
        "USAL0034" => "Attalla",
        "USAL0035" => "Auburn",
        "USAL0036" => "Auburn University",
        "USAL0037" => "Autaugaville",
        "USAL0038" => "Axis",
        "USAL0039" => "Baileyton",
       )
);

Что мне нужно сделать, так это выполнить поиск и замену, чтобы добавить имя состояния к значению, основываясь на нахождении двухбуквенной аббревиатуры состояния в коде ключа массива.

Так, например, поиск, который находит «АК» в ключе и добавляет «Аляска» к значению, поэтому они будут выглядеть так:

    "USAK0001" => "Alaska, Adak",
    "USAK0002" => "Alaska, Adak Island",
    "USAK0003" => "Alaska, Akiachak",
    "USAK0004" => "Alaska, Akiak",
    "USAK0005" => "Alaska, Akutan",
    "USAK0006" => "Alaska, Alakanuk",

Каждый ключ имеет длину 8 символов, но я действительно даже не знаю, как начать пытаться сделать это в Sublime Text.


person Ian    schedule 17.07.2014    source источник
comment
Энтузиасты Sublimetext могут не согласиться, но не будет ли эта задача намного проще решаться вне редактора?   -  person some-non-descript-user    schedule 17.07.2014
comment
Если у вас есть массив сопоставлений от аббревиатуры до полного имени состояний, вы можете написать небольшой PHP-скрипт для объединения, а затем выгрузить содержимое, чтобы вы могли скопировать его обратно в код.   -  person nhahtdh    schedule 17.07.2014


Ответы (1)


Благодаря nhahtdh я сделал это довольно легко с помощью PHP-скрипта, чтобы объединить его. В итоге получилось так же просто, как показано ниже, без необходимости регулярного выражения! (Ура!)

function merge_states_into_cities( $states, $cities ) {

    foreach ( $cities as $key => $array ) {

        foreach ( $array as $code => $city ) {

            foreach ( $states as $abbrv => $state ) {

                if ( strpos( $code, $abbrv, 2 ) ) {
                    echo '"' . $code . '" => "' . $state . ', ' . $city . '",<br>';
                }

            }

        }
    }

}
person Ian    schedule 17.07.2014