2016-09-14 133 views
-3

我需要从如下所示的字符串匹配之间精确的字符串:正则表达式来匹配两个定界符

27,B661|27,071315S|27,B2843|2,355516|27,ASB844|27,H994|28,073126| 

基本上,我想匹配一个逗号后的确切文字,但竖线之前。所以'B661'会匹配。 'B66'本身不会匹配。似乎无法弄清楚这一点!

+0

很好。祝你好运。你有编程问题吗?这个网站是针对问题的,而不是转储您的待办事项列表或(缺少)进度报告的地方。 –

+0

类似'\,[^ \ |]'。进一步调整。 –

+0

只是'爆炸'它。 –

回答

1

要么explode()它@Wiktor说的两倍(!);

<?php 

$string = "27,B661|27,071315S|27,B2843|2,355516|27,ASB844|27,H994|28,073126|"; 

$arr = explode("|", $string); 
foreach ($arr as $item) { 
    list($key, $value) = explode(",", $item); 
    echo "$key: $value\n"; 
} 

?> 

或用相似的正则表达式:

(?<=,)\w+(?=|) 

a demo on regex101.com

+0

感谢您的答复...尝试使用爆炸之前,我张贴,但想找到更干净的东西。实际上结束了使用strpos。 – lbn

+1

*“在我发布之前尝试使用爆炸”* - 下一次,请包括您在原始帖子中尝试的内容。 –