用于获取字符串部分的正则表达

时间:2011-04-19 06:13:55

标签: php regex string

我有一些像

这样的字符串
Shp 1,737 Plenty Rd, Mill Park VIC 3082
560 High St, Preston VIC 3072
217 Mickleham Rd, Tullamarine VIC 3043

从这些我需要“VIC”。任何人都可以帮我找到使用正则表达式或php字符串函数enter image description here

的解决方案

这是从excel表中读取的实际字符串...我希望这些字符串中的州名称,如 NSW,ACT,VIC

3 个答案:

答案 0 :(得分:3)

如果它始终是倒数第二个,只需将空格上的字符串拆分并取倒数第二个元素。

答案 1 :(得分:3)

preg_match_all('/(?P<state>[A-Z]{2,3})\s\d{4}$/m', $str, $matches);

var_dump($matches['state']);

输出

array(3) {
    [0]=>
    string(3) "VIC"
    [1]=>
    string(3) "VIC"
    [2]=>
    string(3) "VIC"
}

这在多行模式下使用正则表达式来匹配空白字符和4位数邮政编码之前的2或3个大写字母。

我称之为state,因为我住在澳大利亚,这些都是澳大利亚州:)

答案 2 :(得分:0)

为了得到它的价值:

$getvic = substr($myString,-8,-7);

刚刚获得VIC:

$getvic = substr($myString,-8,-2);