【发布时间】:2012-11-30 13:29:31
【问题描述】:
我厌倦了害怕正则表达式。这篇文章的主题仅限于正则表达式的 PHP 实现,但是,任何通用的正则表达式建议显然都会受到赞赏(即不要将我与不适用于 PHP 的范围混淆)。
以下(我相信)将删除数字之间的任何空格。也许有更好的方法可以做到这一点,但我仍然想了解发生了什么。
$pat="/\b(\d+)\s+(?=\d+\b)/";
$sub="123 345";
$string=preg_replace($pat, "$1", $sub);
通过模式,我的解释是:
-
\b一个字边界 -
\d+1 个或多个数字的子模式 -
\s+一个或多个空格 -
(?=\d+\b)一个或多个数字后跟单词边界的前瞻断言? - 将它们放在一起,搜索任何单词边界,后跟一个或多个数字,然后是一些空格,然后对其执行某种前瞻断言,并将结果保存在 $1 中以便它可以替换模式?李>
问题:
- 我的上述解释正确吗?
- 先行断言到底是什么意思?
- 前导
/和尾随/的用途是什么?
【问题讨论】:
-
参考和教程:regular-expressions.info
-
* 另请参阅 Open source RegexBuddy alternatives 和 Online regex testing 以获得一些有用的工具,或提及 RegExp.info。
-
谢谢。现在只是查看 deceze 的建议。会看看其他人。
-
虽然基于 ruby 的正则表达式(不确定是否有很大差异),但我还发现 rubular.com 是更容易使用的在线正则表达式测试器之一。
-
我强烈建议您使用Kodos,以便更轻松地掌握正则表达式技能(调试正则表达式和测试正则表达式语句的不同修改也更容易)。