preg_match('/\$(\d+\.\d+)/',$message,$keywords);
dd($keywords);
嗨,已經得到了幾個問題正則表達式提取賽後
1)是否有可能檢測/提取正則表達式之後的文本?例如,我試圖檢測1.20美元以後的文本,例如每小時/小時,每小時/小時。
1.1)也許就像提取匹配
1.2)可能知道,如果我不能提取匹配的位置後20個字符?
$ 100000 /小時的測試測試測試
提取試驗測試TST
preg_match('/\$(\d+\.\d+)/',$message,$keywords);
dd($keywords);
嗨,已經得到了幾個問題正則表達式提取賽後
1)是否有可能檢測/提取正則表達式之後的文本?例如,我試圖檢測1.20美元以後的文本,例如每小時/小時,每小時/小時。
1.1)也許就像提取匹配
1.2)可能知道,如果我不能提取匹配的位置後20個字符?
$ 100000 /小時的測試測試測試
提取試驗測試TST
1)把你想在正則表達式中提取的一切,就像這樣:
preg_match('#\$(\d+\.\d+)(\s+per hour|\s*/hr|\s+per hr|\s*/hour)?#',$message,$keywords);
你會得到$關鍵詞[1]和$關鍵字另一片的文字量[2];
1.1)使用/\$(\d+\.\d+)(.{,20})/
可以在第二場比賽中獲得至多20個字符(如果您刪除逗號,只有在金額至少有20個字符後,纔會匹配)。
1.2)使用參數preg_match()
:preg_match('/\$(\d+\.\d+)/',$message,$keywords,PREG_OFFSET_CAPTURE);
。檢查print_r($keywords)
以查看匹配值及其偏移量如何返回
您可能需要查找所有外觀。在這種情況下,使用preg_match_all()
。
嗨,你能幫我把它放到https://regex101.com>。試圖學習正則表達式謝謝!這樣做時出現問題>< – CodeGuru 2014-12-08 10:15:15
'preg_ *'PHP函數接受許多字符爲[regex delimiter](http://php.net/manual/en/regexp.reference.delimiters.php)。因爲你想匹配''/''我使用'#'作爲正則表達式分隔符來保持正則表達式更簡單(如果我使用'/''作爲分隔符,那麼我必須在正則表達式中引用它)。 https://regex101.com默認使用'/ /',但如果你點擊它,你可以使用其他字符作爲分隔符。 (f.e.''@'') – axiac 2014-12-08 10:32:08
試試這個:
$re = '~\$(\d+\.?\d+)/?(\w+)?~m';
$str = "$100000/hour\n$100.2000/min";
preg_match_all($re, $str, $matches);
var_dump($matches);
輸出
array (size=3)
0 =>
array (size=2)
0 => string '$100000/hour' (length=12)
1 => string '$100.2000/min' (length=13)
1 =>
array (size=2)
0 => string '100000' (length=6)
1 => string '100.2000' (length=8)
2 =>
array (size=2)
0 => string 'hour' (length=4)
1 => string 'min' (length=3)
什麼是輸入?例如$ message的價值 – 2014-12-08 08:40:51
剛剛添加了「輸入」它可以是任何的 – CodeGuru 2014-12-08 08:41:48
這樣的東西? https://regex101.com/r/cX2yU8/3 – 2014-12-08 08:48:41