您好我需要一個正則表達式,實際上可以得到所後插入任何字母「 - 」我有一個字符串,說正則表達式採摘值後「 - 」
"UpTown-R" , "Category-C"
破折號如我得到的回報是什麼是「R」,「C」。
您好我需要一個正則表達式,實際上可以得到所後插入任何字母「 - 」我有一個字符串,說正則表達式採摘值後「 - 」
"UpTown-R" , "Category-C"
破折號如我得到的回報是什麼是「R」,「C」。
如果始終是字符串的最後一部分,你可以做到這一點
/[^-]+$/
[^-]
是一個字符類匹配的一切,是不是一個破折號
+
量詞意味着一個或多個前述元素
$
錨字符串的結尾
簡單
-(.+)$
會得到一切,它是第一個破折號後;請注意,對於此字符串foo-bar-baz
,您將匹配-bar-baz
,並且bar-baz
將處於第一組。
如果只匹配字母,
-([A-Za-z]+)$
就足夠了。您的結果將在$1
組中。
另外,你爲什麼不substr
你的字符串,從最後一個短劃線索引到字符串結束?
它會得到從**第一次**破折號到結束的所有內容,包括破折號[Regexr](http://regexr.com?30apf) – stema 2012-03-14 13:40:14
從結尾開始,我的意思是破折號(如果有的話)將在該組中。我會更新答案。 – 2012-03-14 14:28:51
試試這個正則表達式;
/^.*\-(.*)$/
這樣,你的儀表板
如何獲得後一切:
preg_match('/-([a-z])\b/i', $string, $match);
的Unicode兼容性:
preg_match('/-(\pL)\b/u', $string, $match);
你想要的字母是$match[1]
。
給你:
(?<=-)(.)
結果是在第1組。' - '
爲什麼要使用正則表達式慢的這一點,爲什麼不只是爆炸的字符串:
使用測試?
$str = 'UpTown-R';
$arr = explode('-',$str);
$letter = $arr[1];
$letterSage = $arr[1][0]; // to be sure you only get 1 character.
這也適用!在編寫正則表達式之前,請考慮這些明智的詞語:「如果您的解決方案包含超過3個正則表達式,那麼您就是問題的一部分」
如果短劃線之後總是有一個字母,這需要正則表達式。你可以使用'explode',並抓住每個元素的第一個字符。 – Josh 2012-03-14 13:51:35