Привет Мне нужно Regex, который может фактически получить любую букву, которая вставлена после "-" тире, например, у меня есть строка, которая говорит
"UpTown-R" , "Category-C"
Я получаю взамен «R», «C».
Если всегда последняя часть строки, вы можете сделать это
/[^-]+$/
см. здесь в Regexr
[^-]
– это класс символов, который соответствует всему, что не является тире
+
квантор означает один или более из предыдущего элемента
$
anchor для конца строки
Как насчет:
preg_match('/-([az])\b/i', $string, $match);
Совместимость с Unicode:
preg_match('/-(\pL)\b/u', $string, $match);
Буква, которую вы хотите, находится в $match[1]
.
Вот ты где:
(?<=-)(.)
Результаты представлены в первой группе.
Протестировано с использованием:
Просто
-(.+)$
Получит все, что после первой тире; обратите внимание, что с этой строкой foo-bar-baz
вы будете соответствовать -bar-baz
, а bar-baz
будет в первой группе.
Если вам нужно сопоставить только буквы,
-([A-Za-z]+)$
Будет достаточно. Ваш результат будет в группе $1
.
В качестве альтернативы, почему бы вам не substr
строку, начиная с последнего указателя индекса до конца строки?
попробуйте это регулярное выражение;
/^.*\-(.*)$/
таким образом вы получаете все после тире
Зачем вам использовать медленное регулярное выражение для этого, почему бы просто не взорвать строку на '-'?
$str = 'UpTown-R'; $arr = explode('-',$str); $letter = $arr[1]; $letterSage = $arr[1][0]; // to be sure you only get 1 character.
Это работает так же хорошо! Прежде чем писать регулярные выражения, подумайте об этих мудрых словах: «Если ваше решение состоит из более чем трех регулярных выражений, вы являетесь частью проблемы»,