[英]How do I extract a word between pipes using regex in PHP?
我正在编写一个解析器,我需要使用php提取双管道之间的单词
例如,我想从下面的字符串中提取“ ipsum”
Lorem ||ipsum|| blah
如果双管道之间有多个单词,则也应提取它们
澄清度
当我说多个单词时,我不是这个意思:||另一个单词||
我的意思是
||Word1|| blah blah (newline)
blah ||Word2||
澄清第2部分
the ||quick|| brown fox ||jumps|| over the lazy ||dog||
应该提取的单词应该是“快速”,“跳跃”和“狗”
抱歉给您带来的困惑...下面可能有一些正确的答案,一旦我明天工作确认,我就选一个。
那么简单
$array = explode('||', $string);
之后,您可能想使用trim()修剪数组值。
这是一个正则表达式解决方案: http : //regex101.com/r/vE9pY9
/\Q||\E[^|]+\Q||\E/
但是,这不会接受管道成为该词的一部分。 如果这是必需的,则必须重新制作正则表达式。
尝试这个:
if(preg_match('/\|\|(.*)\|\|/', $str, $matches) === 1){
echo $matches[1];
}
或者如果有多个||
, 尝试这个:
if(preg_match_all('/\|\|(.*?)\|\|/', $str, $matches) !== FALSE){
print_r($matches[1]);
}
我想我知道你在找什么:
\|\|[a-zA-Z0-9]+\|\|
这应该满足您的示例:
||Word1|| blah blah (newline)
blah ||Word2||
挑选Word1和Word2。
您将需要去除||
在任一侧。
有一种使用正则表达式来去除||
也一样,但吻。 通常更容易阅读,以后再将其删除。 因此,您有一个带有简单修饰的简单正则表达式。
希望能帮助到你,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.