我正在寻找将[[wiki:Title]]
简单替换为<a href="/wiki/Title">Title</a>
。
到目前为止,我有:
$text = preg_replace("/\[\[wiki:(\w+)\]\]/","<a href=\"/wiki/read/\\1\">\\1</a>", $text);
以上适用于单个单词,但我试图包含空格,有时也包含特殊字符。
我收到\w+
,但\w\s+
和/或\.+
没有做任何事情。
有人可以提高我对基本正则表达式的理解吗?我并不是说让任何人只是简单地指向一个网页。
答案 0 :(得分:2)
\w\s+
表示“单词字符,后跟1个或多个空格”。你可能意味着(\w|\s)+
(“一个或多个单词字符或空格字符”)。
\.+
表示“一个或多个点”。您可能意味着.+
(任何字符中的一个或多个 - 除了换行符,除非在单行模式下)。
更强大的方法是使用
\[wiki:(.+?)\]
这意味着“任何一个或多个角色,但在其余部分匹配的第一个位置停止”,即在这种情况下停在第一个右括号。没有?它会寻找最长的可用匹配 - 即超过第一个支架。
答案 1 :(得分:0)
您需要使用\[\[wiki:([\w\s]+)\]\]
。注意\w\s
附近的方括号。
如果您正在学习正则表达式,您会发现此网站对测试非常有用:http://rexv.org/
答案 2 :(得分:0)
你肯定会到达那里,但是你有一些语法错误。
当你使用多个字符类如\ w和\ s时,为了在该组内匹配,你必须将它们放在[方括号]中,如此...([\ w \ s] +)这基本上意味着一个或多个单词或空格
在期间前面加一个反斜杠就逃脱了,这意味着正则表达式正在寻找一段时期
至于匹配特殊字符,这更令人痛苦。我试图快速提出一些事情,但希望其他人可以帮助你
(这里有很棒的备忘单,我随时都会在桌面上保留一份副本:http://www.addedbytes.com/cheat-sheets/regular-expressions-cheat-sheet/)