提问人:Maxime DANJOU 提问时间:8/8/2023 最后编辑:InSyncMaxime DANJOU 更新时间:8/8/2023 访问量:35
如何使用正则表达式捕获重复信息
How to capture repeating information with regex
问:
我尝试捕获字符串中的所有信息,但只捕获最后一个信息。 我从正则表达式开始,我需要一些帮助。
字符串:
correspondent à l'ASIN B00WU8XXXX, mais les attributs suivants sont en conflit avec : product_type (Vendeur : 'APPLIANCE_ACCESSORY' / Amazon : 'CLEANING_AGENT'), ean (Vendeur : '400650819XXXX' / Amazon : '400650819XXXX'), item_package_quantity (Vendeur : '5' / Amazon : '10'
我的正则表达式:
.* (.*?) \(Vendeur : \'(.*?)\' \/ Amazon : \'(.*?)\'
我只捕获最后一个块
item_package_quantity : 5 : 10
我想捕捉的:
product_type : APPLIANCE_ACCESSORY : CLEANING_AGENT
ean : 400650819XXXX: 400650819XXXX
item_package_quantity : 5 : 10
一定没什么,但我转过身来:(
答:
1赞
The fourth bird
8/8/2023
#1
您可以使用 1 个或多个单词字符的组 1 匹配来启动模式,并对单引号内的值使用否定字符类。(\w+)
[^']*
根据分隔符,您必须转义\/
(\w+) \(Vendeur : '([^']*)' \/ Amazon : '([^']*)'
$pattern = '/(\w+) \(Vendeur : \'([^\']*)\' \/ Amazon : \'([^\']*)\'/m';
$s = 'correspondent à l\'ASIN B00WU8XXXX, mais les attributs suivants sont en conflit avec : product_type (Vendeur : \'APPLIANCE_ACCESSORY\' / Amazon : \'CLEANING_AGENT\'), ean (Vendeur : \'400650819XXXX\' / Amazon : \'400650819XXXX\'), item_package_quantity (Vendeur : \'5\' / Amazon : \'10\'';
if(preg_match_all($pattern, $s, $matches, PREG_SET_ORDER)) {
print_r(array_map(fn($m) => implode(" : ", array_slice($m, 1)), $matches));
}
输出
Array
(
[0] => product_type : APPLIANCE_ACCESSORY : CLEANING_AGENT
[1] => ean : 400650819XXXX : 400650819XXXX
[2] => item_package_quantity : 5 : 10
)
评论
0赞
Maxime DANJOU
8/8/2023
谢谢,它如我所愿!
上一个:如何将标题正则表达式显示出来?
下一个:如何获取第一个预料匹配元素
评论