Php 分析/拆分正斜杠分隔的字符串
这更像是一个普通的正则表达式问题,而不是一个特定于PHP的问题 我收到了不同的字符串,这些字符串可能如下所示:Php 分析/拆分正斜杠分隔的字符串,php,regex,parsing,text-extraction,delimited-text,Php,Regex,Parsing,Text Extraction,Delimited Text,这更像是一个普通的正则表达式问题,而不是一个特定于PHP的问题 我收到了不同的字符串,这些字符串可能如下所示: A/B/PA ID U/C/D 和我试图在中间斜线中提取具有空格的段(“/PA ID u”):使用< /P> preg\u match('/(\/PA.+)(\/.+$)/',$string,$matches) 然而,我得到的不是我期望的“/PA ID U”,而是“/PA ID U/C/D” 在最后一组中,如何使匹配“/.+”优先于“$” 补充说明: 我需要最后一组匹配另一个“/so
A/B/PA ID U/C/D
和我试图在中间斜线中提取具有空格的段(“/PA ID u”):使用< /P>
preg\u match('/(\/PA.+)(\/.+$)/',$string,$matches)代码>
然而,我得到的不是我期望的“/PA ID U”,而是“/PA ID U/C/D”
在最后一组中,如何使匹配“/.+”优先于“$”
补充说明:
我需要最后一组匹配另一个“/somethingsomthing”或“”,因为字符串变化很大。如果我只匹配“/.+”,那么如果“/PA ID U”位于行的末尾,例如在“A/B/PA ID U”中,我将无法获取“/PA ID U”
基本上,我需要能够提取特定片段,如下所示:
给定:“A/B/PA ID U/PA ID U/C/D”
摘录:(A)、(B)、(PA ID U)、(PA ID U)、(C)、(D)
[更新]
我试图避免使用split()
或explode()
,因为这意味着我必须单独匹配“paidu”模式。除了只提取斜杠分隔的段外,我还需要验证子字符串是否匹配特定的模式。我认为您可以最有效地使用split来完成所需的操作
split('/',$string);
请参阅:我认为您可以最有效地使用split来完成您想要的任务
split('/',$string);
参见:necramirez
(\w+\s?)+
应该能工作的necramirez
(\w+\s?)+
您的正则表达式不工作,因为+
正在贪婪。您可以通过在第一个+
中添加一个非贪婪修饰符(一个?
)来修复它,如下所示:
preg_match('/(\/PA .+?)(\/.+|$)/', '', $matches);
你也可以这样做:
'/\/(PA [^\/]+)(\/.+|$)/'
我把斜线移到了parens之外,以避免捕捉到它(我想你对斜线不感兴趣)。[^\/]+
将捕获下一个斜杠之前的任何字符 您的正则表达式不工作,因为+
正在贪婪。您可以通过在第一个+
中添加一个非贪婪修饰符(一个?
)来修复它,如下所示:
preg_match('/(\/PA .+?)(\/.+|$)/', '', $matches);
你也可以这样做:
'/\/(PA [^\/]+)(\/.+|$)/'
我把斜线移到了parens之外,以避免捕捉到它(我想你对斜线不感兴趣)。[^\/]+
将捕获下一个斜杠之前的任何字符 在一个否定字符类中写入分隔符进行匹配,或者将分隔符作为文字字符进行拆分
代码:()
输出:
PA ID U
---
array (
0 => 'PA ID U',
1 => 'PA ID U',
)
---
array (
0 => 'A',
1 => 'B',
2 => 'PA ID U',
3 => 'PA ID U',
4 => 'C',
5 => 'D',
)
通过在否定字符类中写入分隔符进行匹配,或将分隔符作为文字字符进行拆分
代码:()
输出:
PA ID U
---
array (
0 => 'PA ID U',
1 => 'PA ID U',
)
---
array (
0 => 'A',
1 => 'B',
2 => 'PA ID U',
3 => 'PA ID U',
4 => 'C',
5 => 'D',
)
我在这里有点不知所措。我无法让这个正则表达式将给定的“A/B/paid U/paid U/C/D”提取到(A)、(B)、(paid U)、(paid U)、(C)、(D)中。php使用什么正则表达式风格?Perl?蟒蛇?任何其他?preg_匹配都作为对libpcre的调用实现。PCRE=Perl兼容的正则表达式我在这里有点不知所措。我无法让这个正则表达式将给定的“A/B/paid U/paid U/C/D”提取到(A)、(B)、(paid U)、(paid U)、(C)、(D)中。php使用什么正则表达式风格?Perl?蟒蛇?任何其他?preg_匹配都作为对libpcre的调用实现。PCRE=Perl兼容的正则表达式