我需要检查一个字符串是否有某个字符串,我想使用正则表达式,但是我继续尝试的越多,它就越混淆(并且让我感到沮丧);我似乎无法做对。
当字符串包含这样的内容时,我需要表达式返回true:[[module:instance]]
,但它需要满足以下条件:
[[
:
之外的所有内容,并且对其长度没有限制:
字符必须存在后:
后再添加一个字符串,该字符串可以包含:
以外的所有内容,并且对其长度没有限制]]
任何帮助,提示,好的教程,任何事情都会非常感激!
提前致谢!
答案 0 :(得分:6)
试试这个:
preg_match('/\[\[[^:]+?:[^:]+?]]/', $str, $match)
解释:
\[\[
与文字[[
[^:]+?
匹配:
(非贪婪):
与文字:
[^:]+?
匹配:
(非贪婪)]]
与文字]]
匹配。答案 1 :(得分:2)
\[\[[^:]+:[^:]+\]\]
说明:
\[\[
匹配两个左括号。
[^:]
匹配任何一个字符,但冒号除外。
[^:]+
匹配一个或多个字符,但冒号除外。
答案 2 :(得分:1)
试试这个正则表达式:
\[\[.*?:[^:]*?\]\]
在方括号前需要反斜杠,因为它们是元字符,如。,*和?。
答案 3 :(得分:0)
\[\[[^:]+\:[^:]+\]\]
怎么样?这有用吗?
它应该匹配两个文字[
字符,然后任何非:
字符至少重复一次,然后是:
,然后是任何不是:
的字符至少一次,然后是两个文字]
字符。
答案 4 :(得分:0)
这会有用吗?
[[[^:] :{1} [^:] ]]