php一些没有结尾的正则表达式

php一些没有结尾的正则表达式,php,Php,我正在努力学习正则表达式并拥有一个字符串,我希望开始是(不包括) 以及最终目的(不包括) 我可以使基本正则表达式正常,但它始终包含番茄部分,而不是在它之前结束。所以如果我有 'sdf98uj3.com/sdjkh.sdf./sdf.sdf">[tomatoiosdf8uj3' ,然后我想返回: sdjkh.sdf./sdf.sdf 我在php中使用preg_match。有什么想法吗 preg_match('~\.com/(.*?)">\[tomato~', $str, $matc

我正在努力学习正则表达式并拥有一个字符串,我希望开始是(不包括)

以及最终目的(不包括)

我可以使基本正则表达式正常,但它始终包含番茄部分,而不是在它之前结束。所以如果我有

'sdf98uj3.com/sdjkh.sdf./sdf.sdf">[tomatoiosdf8uj3'
,然后我想返回:

sdjkh.sdf./sdf.sdf
我在php中使用preg_match。有什么想法吗

preg_match('~\.com/(.*?)">\[tomato~', $str, $match);
$match[1]
包含您的字符串。
(.*?
是一个捕获
.com/
“>[tomato
之间的每个字符的函数

这是学习正则表达式的良好开端


也可以使用
strpos
strrpos
substr
在不使用正则表达式的情况下解决:


如果你真的在解析url或HTML,正则表达式并不是最好的方法(尽管它们在很多方面都很好,值得学习)。对于url,请参阅PHP手册中的parse_url或pathinfo。对于HTML,请参阅SimpleXML。
sdjkh.sdf./sdf.sdf
preg_match('~\.com/(.*?)">\[tomato~', $str, $match);
$start = strpos($str, '.com/');
$end = strrpos($str, '">[tomato'); // or strpos to find the first occurance
$sub = substr($str, $start, $end-$start);
preg_match('/(.*?)\.com/(.*?)">\[tomato(.*)/', $text, $matches);

echo $matches[2];