PHP匹配两个(起始,结束)分隔符之间的字符串

时间:2017-06-23 16:48:04

标签: php regex

字符串; RandomValue1:|RandomSentence1.|RandomValue2:|RandomSentence2.|

我尝试匹配RandomSentence1.RandomSentence2.。我认为"。"在句子中可以用来帮助匹配,因为每个句子都以句号结束。所以,如果我在比赛中没有这段时间。我没关系。我从来都不擅长RegEx,但我总是愿意去学习。通过这里的结果,我无法想出任何有效的方法。我是用PHP编写的。我相信preg_match()或preg_split()都是这里的用法。

我最初尝试过; .*:\|.*\.\|

但是它只匹配整个字符串,因为它以.|结束。

然后我尝试了这个; .*:\|\s*(.*?)\s*\|

但这只匹配RandomSentence2.

这些是我在网上找到的改编。

2 个答案:

答案 0 :(得分:1)

这应该适用于正则表达式捕获所有。找不到.|,然后是.|

preg_match_all('/([^.|]+\.)\|/', $string, $matches);
print_r($matches[1]);

如果您想对其他条目执行某些操作,则可以进行拆分,然后找到您想要的内容。在|上拆分然后grep查找以.结尾的数组值:

$matches = preg_grep('/\.$/', explode('|', $string));

答案 1 :(得分:1)

由于你已经知道最后有一个点,你可以匹配所有的 简单的(?<=\|)[^|.]+(?=\.\|)

https://regex101.com/r/ZsHcWq/1

 (?<= \| )
 [^|.]+ 
 (?= \.\| )