我在使用正则表达式时遇到问题。从来没有完全理解它真正的问题是:有没有人有一个很好的网站来解释表达之间的区别,而不是仅仅发布类似的东西
$regexp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
然后喋喋不休地说那条线作为一个整体会做什么。而不是每个表达式会做什么。我试过用谷歌搜索许多不同版本的 preg_replace 和 regex 教程,但他们似乎都假设我们已经知道像 \b[^>]* 这样的东西会做什么。
次要的。我试图这样做的原因:我想转
<span style="color: #000000">*ANY NUMBER*</span>
进入
<span style="color: #0000ff">*ANY NUMBER*</span>
我已经尝试过的一些变体有些只是没有用,有些使脚本变得废话。
$data = preg_replace("/<span style=\"color: #000000\">([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);//just tried to match atleast 0-9
$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>(.*?)</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
这个特定问题的答案对我来说并不像网站那么重要,所以检查一下。尝试了很多不同的网站,我很确定它不会超出我的理解范围,我只是找不到适合所有糟糕教程/示例农场的好东西。w3 和 phpdotnet 的正常后备没有我这次需要的东西。
EDIT1对于那些最终在这里寻找类似答案的人:
$data = preg_replace("/<span style=\"color: #000000\">([0-9]{1,})<\/span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
做了它需要做的事。可悲的是,这是我尝试的第一件事,但是因为我没有放 </span> 而不是它不起作用,而且我不知道“[0-9]{1,}”是否是匹配任何内容的最合适的方式number (告诉它匹配任何整数 0-9 与 [0-9] 至少一次和尽可能多次与 {1,} 它仍然符合目的)
ROY Finley 发布: http: //www.macronimous.com/resources/writing_regular_expression_with_php.asp 它是一个很好的站点,其中包含表达式定义列表和下面的一个很好的示例处理。
另外:regular-expressions.info/tutorial.html 被发布了几次。它是一个更慢更深入的步行,但如果你像我一样被困住,那就太好了。
在我有机会玩它们之后,会弹出关于 regex101 和解析器的信息。
EDIT2 DWright 在“掌握正则表达式”下面发布了一个书籍链接。如果您查看正则表达式并且无法确定字符卷积的头部或尾部,那么绝对值得选择它。花了大约一个半小时阅读了大约一半,但与花在谷歌上的时间和用来避免它的混乱工作相比,这根本不算什么。
下面链接的 html 解析也适用于这个特定问题。