嗨我需要一个正则表达式,它实际上可以获得在“ - ”短划线后插入的任何字母,例如我有一个字符串表示
"UpTown-R" , "Category-C"
我得到的回报是“R”,“C”。
答案 0 :(得分:6)
答案 1 :(得分:3)
怎么样:
preg_match('/-([a-z])\b/i', $string, $match);
unicode兼容性:
preg_match('/-(\pL)\b/u', $string, $match);
您想要的信件位于$match[1]
。
答案 2 :(得分:2)
一个简单的
-(.+)$
在第一次冲刺之后会得到它所有的东西;请注意,使用此字符串foo-bar-baz
,您将匹配-bar-baz
,而bar-baz
将位于第一组。
如果您只需要匹配字母,
-([A-Za-z]+)$
就够了。您的结果将在$1
组中。
或者,为什么不从你的字符串substr
开始,从最后一个短划线索引到字符串结尾?
答案 3 :(得分:2)
你在这里:
(?<=-)(.)
结果在第1组。
使用:
进行测试答案 4 :(得分:1)
试试这个正则表达式;
/^.*\-(.*)$/
这样你就可以获得破折号后的所有内容
答案 5 :(得分:1)
为什么你会使用慢速正则表达式,为什么不在' - '上爆炸字符串?
$str = 'UpTown-R';
$arr = explode('-',$str);
$letter = $arr[1];
$letterSage = $arr[1][0]; // to be sure you only get 1 character.
这也适用!在编写正则表达式之前,请考虑这些明智的词:“如果您的解决方案包含3个以上的正则表达式,那么您就是问题的一部分”