2011-01-31 8 views
0

のないいくつかの正規表現は、私は最初はPHP私は正規表現を学び、文字列を持ってしようとしていますエンド

.com/ 

">[tomato 
(含まない)するエンド(含まない)になりたいです

私は基本正規表現をOKにすることができますが、直前に終わるのではなく、トマト部分をその中に含めるようにしています。私は

'sdf98uj3.com/sdjkh.sdf./sdf.sdf">[tomatoiosdf8uj3' 

を持っているのであれば、私は戻りたい:

sdjkh.sdf./sdf.sdf 

私はPHPでするpreg_matchを使用しています。何か案は?

+0

あなたが実際にURLやHTMLを解析している場合は、正規表現が行くための最善の方法ではありません(しかし、彼らは多くの事のためにかなり気の利いており、学ぶ価値があります)。 URLについては、parse_urlまたはpathinfoにあるPHPマニュアルを参照してください。 HTMLについては、SimpleXMLを見てください。 – dnagirl

答えて

1
preg_match('~\.com/(.*?)">\[tomato~', $str, $match); 

$match[1]には文字列が含まれています。 (.*?)は、.com/">[tomatoの間のすべての文字をキャプチャするcapture groupです。

http://www.regular-expressions.info/は、正規表現を学習するのに適しています。


strpos(docs)を使用して、正規表現せずに解決できる 、strrpos(docs)substr(docs)

$start = strpos($str, '.com/'); 
$end = strrpos($str, '">[tomato'); // or strpos to find the first occurance 
$sub = substr($str, $start, $end-$start); 
+0

私は彼らがもっと良い方法を知っている!ありがとう! – David19801

0
preg_match('/(.*?)\.com/(.*?)">\[tomato(.*)/', $text, $matches); 

echo $matches[2]; 
関連する問題