我是regex的新手,有一些问题。
我有一个文本文件,其中包含要放入数组中的文本块。每个文本块以"Hand#"开头,以"**Deck**"结尾,并用换行符分隔。它看起来像这样:
Hand #...random digits
blah
blah
blah
blah
** Deck **...random digits
Hand #...random digits
blah
blah
blah
blah
** Deck **...random digits
Hand #...random digits
blah
blah
blah
blah
** Deck **...random digits
我希望每个数组元素都包含每对"Hand#"answers"**Deck**"之间的文本。到目前为止,我尝试过的没有返回任何结果:
preg_match_all("%Hand #(.*?)[*][*] Deck [*][*]%", $file, $array);
谢谢你的帮助!
.
与换行符不匹配。您可以使用s
(单线或"dotall")修改器更改此项:
preg_match_all("%Hand #(.*?)[*][*] Deck [*][*]%s", $file, $array);
如果您不希望您的结果包含Hand #
和** Deck **
,则捕获的替代方法是环视:
preg_match_all("%(?<=Hand #).*?(?=[*][*] Deck [*][*])%s", $file, $array);
如果您确实需要它们,您可以简单地从第一个模式中删除括号。