了解正则表达式
我厌倦了害怕正则表达式。本文的主题仅限于正则表达式的PHP实现,但是,任何通用正则表达式的建议显然都会受到赞赏(即不要将我与不适用于PHP的范围混淆)。
以下内容(我相信)将删除数字之间的任何空格。也许有更好的方法来做到这一点,但我仍然想了解发生了什么。
$pat="/\b(\d+)\s+(?=\d+\b)/";
$sub="123 345";
$string=preg_replace($pat, "$1", $sub);
通过模式,我的解释是:
-
\b
单词边界 -
\d+
包含 1 位或更多位数字的子模式 -
\s+
一个或多个空格 -
(?=\d+\b)
一个或多个数字后跟一个单词边界的先验断言? - 把它们放在一起,搜索任何单词边界,后跟一个或多个数字,然后是一些空格,然后对它进行某种前瞻断言,并将结果保存在$ 1中,以便它可以替换模式?
问题:
- 我的上述解释是否正确?
- 这个前瞻断言到底是怎么回事?
- 前导和尾随的目的是什么?
/
/