我在循环中有一些字符串,如下例所示。
1)由Olympia Industries Ltd.出售(4.7 / 5 | 33,445个评分)并由亚马逊完成。提供礼物包裹服务。
2)健康第一次交易(4.3次,共5次| 47个评分),亚马逊实现。提供礼物包裹服务。
3)由hamsaveni出售并履行(4.1 / 5 | 101个评分)。
4)由Coffee Shopee出售并实现(3.4 / 5 | 7个评分)。
我想要的是提取卖家的名字,即
1)奥林匹亚工业有限公司 2)健康第一次交易 3)hamsaveni 4)Coffee Shopee
我知道我们可以通过匹配第一个支撑“(”和一些if else条件来实现。但不幸的是我无法做到。
任何帮助都会非常感激。
答案 0 :(得分:1)
怎么样:
preg_match('/by([^(]+)/', $string, $matches);
答案 1 :(得分:0)
我认为卖家名称是在“by”之后开始并在(。然后
之前结束它适合你。
SUBSTR($字符串,strpos($字符串, '由')+ 2,strpos($字符串, '(') - strpos($字符串, '由') - 2);
答案 2 :(得分:0)
我希望人们不要介意我使用.NET正则表达式语法(它非常相似),但这是我想出的:
(?:by)([A-Za-z ]+)(?:\([0-9]+(\.[0-9]+)?)
基本上,这个名字是一个捕获的组,由一些字母和空格的组合组成,这些组合出现在""之后。 (这是一个non-capturing group,因为你真正关心的只是名字)和评级(也是一个非捕获组)。