努力解决这一问题,因为我对正则表达式不太满意。我有这样的字符串:
Method
Lorem ipsum dolor sit amet, id pro lorem consulatu, ut nemore principes vel. Nibh aliquam iracundia ea est, probo utamur placerat at duo. Nam an perfecto voluptaria temporibus, no dicat dolores eum. Doming dissentias eloquentiam sit id, sit eu etiam scriptorem appellantur, ne explicari voluptaria nec.
Agam erroribus cum id, vis ei nominavi copiosae. Per unum atomorum ut, amet atqui moderatius in mel, ex mucius concludaturque vix. Ei quodsi admodum conclusionemque duo, pro vidit nonumy fastidii at. Aliquip voluptua appetere eam id.
42
Aliquip voluptua appetere
我可以使用以下正则表达式检测到: /^Method\n(.*[\s\S]*)(?:\d\d)/
https://regex101.com/r/Uw3XzK/1
问题有时是我检测到的字符串未以数字结尾。在这里,我通常只需要转到字符串的末尾。
Method
Lorem ipsum dolor sit amet, id pro lorem consulatu, ut nemore principes vel. Nibh aliquam iracundia ea est, probo utamur placerat at duo. Nam an perfecto voluptaria temporibus, no dicat dolores eum. Doming dissentias eloquentiam sit id, sit eu etiam scriptorem appellantur, ne explicari voluptaria nec.
Agam erroribus cum id, vis ei nominavi copiosae. Per unum atomorum ut, amet atqui moderatius in mel, ex mucius concludaturque vix. Ei quodsi admodum conclusionemque duo, pro vidit nonumy fastidii at. Aliquip voluptua appetere eam id.
我试过?
在搅拌器上加一个。/^Method\n(.[\s\S])(?:\d\d)?
但是,这将破坏第一个字符串的匹配。
我该如何首先匹配字符串1,然后又回退到文件末尾?
preg_match_all
在点所有模式下使用时,以下模式实际上适用于PHP :
\bMethod.*?(?=\d{2}|$)
示例脚本:
$input = "Method\nLorem ipsum dolor sit amet, id pro lorem consulatu, ut nemore principes vel. Nibh aliquam iracundia ea est, probo utamur placerat at duo. Nam an perfecto voluptaria temporibus, no dicat dolores eum. Doming dissentias eloquentiam sit id, sit eu etiam scriptorem appellantur, ne explicari voluptaria nec.\nAgam erroribus cum id, vis ei nominavi copiosae. Per unum atomorum ut, amet atqui moderatius in mel, ex mucius concludaturque vix. Ei quodsi admodum conclusionemque duo, pro vidit nonumy fastidii at. Aliquip voluptua appetere eam id.\n42\nAliquip voluptua appetere";
preg_match_all("/\bMethod.*?(?=\d{2}|$)/s", $input, $matches);
print_r($matches);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句