Regex per il prelievo di un valore dopo "-"

Ciao ho bisogno di un Regex che può effettivamente get qualsiasi lettera che viene inserita dopo il trattino "-" ad esempio ho una string che dice

"UpTown-R" , "Category-C" 

Quello che ottengo in cambio è "R", "C".

Se è sempre l'ultima parte della string, puoi farlo

 /[^-]+$/ 

vederlo qui su Regexr

[^-] è una class di caratteri che corrisponde a tutto ciò che non è un trattino

+ quantificatore indica uno o più elementi precedenti

$ anchor per la fine della string

Che ne dite di:

 preg_match('/-([az])\b/i', $string, $match); 

compatibilità unicode:

 preg_match('/-(\pL)\b/u', $string, $match); 

La lettera che vuoi è in $match[1] .

Ecco qui:

 (?<=-)(.) 

I risultati sono nel gruppo 1.

Testato usando:

Un semplice

 -(.+)$ 

Otterrà tutto ciò che è dopo il primo trattino; si noti che con questa string foo-bar-baz si -bar-baz e bar-baz sarà nel primo gruppo.

Se devi abbinare solo lettere,

 -([A-Za-z]+)$ 

Sarà sufficiente. Il tuo risultato sarà nel gruppo $1 .

In alternativa, perché non si substr la string, a partire dall'ultimo indice del trattino fino alla fine della string?

prova questa regex;

 /^.*\-(.*)$/ 

in questo modo ottieni tutto dopo il cruscotto

Perché dovresti usare la regex lenta per questo, perché non far esplodere la string su "-"?

 $str = 'UpTown-R'; $arr = explode('-',$str); $letter = $arr[1]; $letterSage = $arr[1][0]; // to be sure you only get 1 character. 

Funziona altrettanto bene! Prima di scrivere regex dappertutto, pensa a queste sagge parole: "Se la tua soluzione consiste di più di 3 espressioni regolari, fai parte del problema"