Regex для выбора значения после "-"

Привет Мне нужно Regex, который может фактически получить любую букву, которая вставлена ​​после "-" тире, например, у меня есть строка, которая говорит

"UpTown-R" , "Category-C" 

Я получаю взамен «R», «C».

Related of "Regex для выбора значения после "-""

Если всегда последняя часть строки, вы можете сделать это

 /[^-]+$/ 

см. здесь в 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. 

Это работает так же хорошо! Прежде чем писать регулярные выражения, подумайте об этих мудрых словах: «Если ваше решение состоит из более чем трех регулярных выражений, вы являетесь частью проблемы»,