Используя регулярное выражение, я хочу переместить две буквы в строке.
W28
L36
W29-L32
Должен быть изменен на:
28W
36L
29W-32L
Числа варьируются между 25
а также 44
, Буквы, которые нужно переместить, всегда обозначаются буквой «W» и / или «L», а буква «W» всегда первая, когда они обе существуют в строке.
Мне нужно сделать это с помощью одного регулярного выражения с использованием PHP. Любые идеи будут потрясающими!
РЕДАКТИРОВАТЬ:
Я новичок в регулярных выражениях и много чего перепробовал безуспешно. Ближайший, который я пришел, использовал "/\b(W34)\b/"
для каждой возможности. Я также нашел кое-что об использовании переменных в функции замены, но мне не повезло с их использованием.
Ваше регулярное выражение \b(W34)\b
точно соответствует W34
как целое слово. Тебе необходимо класс персонажа соответствовать W
или же L
и некоторые альтернативы, чтобы соответствовать числовому диапазону, и использовать большинство захват групп.
Вы можете использовать следующую замену регулярных выражений:
$re = '/\b([WL])(2[5-9]|3[0-9]|4[0-4])\b/';
$str = "W28\nL36\nW29-L32";
$result = preg_replace($re, "$2$1", $str);
echo $result;
Увидеть IDEONE демо
Вот, ([WL])
соответствует и захватывает либо W
или же L
в группу 1 и (2[5-9]|3[0-9]|4[0-4])
сопоставляет целые числа от 25 до 44 и захватывает в группу 2. Обратные используются для изменения порядка групп в строке замены.
И вот демонстрация регулярных выражений в случае, если вы хотите настроить его позже.
Других решений пока нет …