繁体   English   中英

正则表达式 - 如何在第一次匹配之前捕获?

[英]Regular Expression - How do I capture before the first match?

服装与时尚 · 美国 · 10001+ 员工 · 50 亿收入

非营利组织 · 加拿大 · 501-1000 名员工

这是上面的几个例子。 我试图抓住这个行业(例如Apparel & FashionNon-Profit Organization

我正在尝试使用第一个 · 作为捕获参考

这将捕获最后一个点 (.+)\s·之前的所有内容

但我想在第一个点之前捕获所有内容。 我该怎么做呢? 抱歉,这是一个基本问题。

捕获所有不是·的东西。 这允许您在需要时使用preg_match_all来获取由·分隔的所有部分:

([^·]+)

您可以添加开始锚点以仅获取第一个锚点,但可能不需要:

^([^·]+)

但是在 PHP 中:

$result = explode('·', $text)[0];

或者得到所有:

$results = explode('·', $text)[0];
echo $results[0];
echo $results[1];
//etc...

您应该使用非贪婪的正则表达式。 (.+?)·

完全不需要正则表达式,看这段代码:

$position = strpos($string, "·", 5);  
$string = substr ( $string , 0, $position - 2 );

其中$string是要解析的字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM