在“ - ”之后选择值的正则表达式

时间:2012-03-14 13:34:44

标签: php regex

嗨我需要一个正则表达式,它实际上可以获得在“ - ”短划线后插入的任何字母,例如我有一个字符串表示

 "UpTown-R" , "Category-C"

我得到的回报是“R”,“C”。

6 个答案:

答案 0 :(得分:6)

如果始终是字符串的最后一部分,则可以执行此操作

/[^-]+$/

看到它here on Regexr

[^-]是一个匹配所有非破折号

的字符类

+量词表示前面元素中的一个或多个

$锚定字符串的结尾

答案 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个以上的正则表达式,那么您就是问题的一部分”