我想删除字符串[0-9]中的所有数字.我写了这个有效的代码:
$words = preg_replace('/0/', '', $words ); // remove numbers
$words = preg_replace('/1/', '', $words ); // remove numbers
$words = preg_replace('/2/', '', $words ); // remove numbers
$words = preg_replace('/3/', '', $words ); // remove numbers
$words = preg_replace('/4/', '', $words ); // remove numbers
$words = preg_replace('/5/', '', $words ); // remove numbers
$words = preg_replace('/6/', '', $words ); // remove numbers
$words = preg_replace('/7/', '', $words ); // remove numbers
$words = preg_replace('/8/', '', $words ); // …Run Code Online (Sandbox Code Playgroud) 我厌倦了对正则表达式的恐惧.这篇文章的主题仅限于正则表达式的PHP实现,但是,任何通用的正则表达式建议显然都会受到赞赏(即不要将我与不适用于PHP的范围混淆).
以下(我相信)将删除数字之间的任何空格.也许有更好的方法,但我仍然想了解发生了什么.
$pat="/\b(\d+)\s+(?=\d+\b)/";
$sub="123 345";
$string=preg_replace($pat, "$1", $sub);
Run Code Online (Sandbox Code Playgroud)
通过这种模式,我的解释是:
\b 一个词边界\d+ 一个或多个数字的子模式\s+ 一个或多个空格(?=\d+\b) 先行断言一个或多个数字后跟一个单词边界?问题:
/和尾随的目的是什么/?有没有办法在Python中调试正则表达式?而且我不是指尝试和尝试直到他们工作的过程:)
以下是如何在Perl中调试正则表达式:
use re 'debug';
my $str = "GET http://some-site.com HTTP/1.1";
if($str =~/get\s+(\S+)/i) {
print "MATCH:$1\n";
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在运行时在我的计算机上产生以下输出:
Compiling REx "get\s+(\S+)"
Final program:
1: EXACTF (3)
3: PLUS (5)
4: SPACE (0)
5: OPEN1 (7)
7: PLUS (9)
8: NSPACE (0)
9: CLOSE1 (11)
11: END (0)
stclass EXACTF minlen 5
Matching REx "get\s+(\S+)" against "GET http://some-site.com HTTP/1.1"
Matching stclass EXACTF against "GET http://some-site.com HTTP/1.1" (33 chars)
0 | 1:EXACTF (3)
3 | 3:PLUS(5)
SPACE can match 1 times out …Run Code Online (Sandbox Code Playgroud) 我正在html页面上创建一个preg_replace.我的模式旨在为html中的某些单词添加周围标记.但是,有时我的正则表达式会修改html标记.例如,当我尝试替换此文本时:
<a href="example.com" alt="yasar home page">yasar</a>
Run Code Online (Sandbox Code Playgroud)
这样yasar读取<span class="selected-word">yasar</span>,我的正则表达式也替换了锚标记的alt属性中的yasar.preg_replace()我正在使用的电流看起来像这样:
preg_replace("/(asf|gfd|oyws)/", '<span class=something>${1}</span>',$target);
Run Code Online (Sandbox Code Playgroud)
如何制作正则表达式,使其与html标签内的任何内容都不匹配?
这是一个很好的文档正则表达式,易于理解,维护和修改.
text = text.replace(/
( // Wrap whole match in $1
(
^[ \t]*>[ \t]? // '>' at the start of a line
.+\n // rest of the first line
(.+\n)* // subsequent consecutive lines
\n* // blanks
)+
)
/gm,
Run Code Online (Sandbox Code Playgroud)
但是你如何处理这些?
text = text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,
Run Code Online (Sandbox Code Playgroud)
是否有某种美化器能够理解它并描述其功能?
我需要创建一个格式化文档.我知道用于格式化文本的正则表达式,但我不知道如何重现该正则表达式的示例.这个应该是一个内部链接:
'{\[((?:\#|/)[^ ]*) ([^]]*)\]}'
Run Code Online (Sandbox Code Playgroud)
任何人都可以创建一个与此匹配的示例,也许可以解释他是如何得到它的.我被困在'?'.
我从来没有在开头使用过这个元字符,通常我会用它来标记文字不能出现或只出现一次.
谢谢
是他们的任何向导或工具来创建和测试PHP的正则表达式,因为它是如此困难:(?谢谢:)
可能重复:
在regexp中懒惰和贪婪意味着什么?
我知道在正则表达式中*,+或?之后的问号 意味着不合适,但如果我想匹配任何字符,使用(.*)或(.*?)之间的区别是什么?
谢谢.
编辑:在我的情况下,我想检查一个URL.有什么区别
http://site\.net/(.*?)\.html
Run Code Online (Sandbox Code Playgroud)
和
http://site\.net/(.*)\.html
Run Code Online (Sandbox Code Playgroud)
?
我想在用户的textarea上使用htmlspecialchars,但我希望他允许使用粗体和斜体.我怎么能不在这些标签上使用htmlspecialchars?