Php 使用正则表达式搜索多个元素

Php 使用正则表达式搜索多个元素,php,regex,Php,Regex,如何检查字符串中的可变元素数 [keyword1|keyword2|keyword3] [keyword1|keyword2] 。。。或者三个以上的关键字。这只适用于三个要素: preg_match("/^\[(.*)\|(.*)\|(.*)\]$/",$string, $matches) 编辑:如何在变量中获取捕获的关键字?i、 e: matches[1] = keyword1 matches[2] = keyword2 matches[3] = keyword3 使用这个,3和更多 ^

如何检查字符串中的可变元素数

[keyword1|keyword2|keyword3]
[keyword1|keyword2]
。。。或者三个以上的关键字。这只适用于三个要素:

preg_match("/^\[(.*)\|(.*)\|(.*)\]$/",$string, $matches)
编辑:如何在变量中获取捕获的关键字?i、 e:

matches[1] = keyword1
matches[2] = keyword2
matches[3] = keyword3
使用这个,3和更多

^\[[^|\n]*(?:\|[^|\n]*){2,}\]$

三年多以来,

^\[[^|\n]*(?:\|[^|\n]*){3,}]$

您可以通过
\G
anchor这样做

(?:^\[|\G)\|?([^\n|\]]+)(?=[\]|])
使用
\G
锚点进行连续字符串匹配

使用这个,3和更多

^\[[^|\n]*(?:\|[^|\n]*){2,}\]$

三年多以来,

^\[[^|\n]*(?:\|[^|\n]*){3,}]$

您可以通过
\G
anchor这样做

(?:^\[|\G)\|?([^\n|\]]+)(?=[\]|])
使用
\G
锚点进行连续字符串匹配

使用这个,3和更多

^\[[^|\n]*(?:\|[^|\n]*){2,}\]$

三年多以来,

^\[[^|\n]*(?:\|[^|\n]*){3,}]$

您可以通过
\G
anchor这样做

(?:^\[|\G)\|?([^\n|\]]+)(?=[\]|])
使用
\G
锚点进行连续字符串匹配

使用这个,3和更多

^\[[^|\n]*(?:\|[^|\n]*){2,}\]$

三年多以来,

^\[[^|\n]*(?:\|[^|\n]*){3,}]$

您可以通过
\G
anchor这样做

(?:^\[|\G)\|?([^\n|\]]+)(?=[\]|])
使用
\G
锚点进行连续字符串匹配

您可以使用:

(?:^\[(?=[^][|]*(?:\|[^][|]*)*\])|(?!^)\G)([^][|]*)(?:[]|])

详细介绍了此技术

您可以使用:

(?:^\[(?=[^][|]*(?:\|[^][|]*)*\])|(?!^)\G)([^][|]*)(?:[]|])

详细介绍了此技术

您可以使用:

(?:^\[(?=[^][|]*(?:\|[^][|]*)*\])|(?!^)\G)([^][|]*)(?:[]|])

详细介绍了此技术

您可以使用:

(?:^\[(?=[^][|]*(?:\|[^][|]*)*\])|(?!^)\G)([^][|]*)(?:[]|])




这个技巧在preg\u match(“/^\[^\[^\\n]*(?:\\\[^\\\n]*){2,}\]$/”,$string,$matches)中有详细的解释。所以我的结果是:$matches[1],$matches[2]$匹配[n]。对吗?不,它只匹配那一行。你想捕捉关键词吗?你能用预期的结果编辑这个问题吗?是的,很抱歉这个问题不够充分。更新了问题。在regex101.com-link中,每秒的结果是否为空
match1='keyword 1',match2='
等等……我想你可以很容易地从数组中过滤出空字符串。
preg\u match(“/^\[^\[^\\\\n]*(?:\\\\[^\\\n]*{2,}\]$/”,$string,$matches)
所以我的结果是:$matches[1],$matches[2]$匹配[n]。对吗?不,它只匹配那一行。你想捕捉关键词吗?你能用预期的结果编辑这个问题吗?是的,很抱歉这个问题不够充分。更新了问题。在regex101.com-link中,每秒的结果是否为空
match1='keyword 1',match2='
等等……我想你可以很容易地从数组中过滤出空字符串。
preg\u match(“/^\[^\[^\\\\n]*(?:\\\\[^\\\n]*{2,}\]$/”,$string,$matches)
所以我的结果是:$matches[1],$matches[2]$匹配[n]。对吗?不,它只匹配那一行。你想捕捉关键词吗?你能用预期的结果编辑这个问题吗?是的,很抱歉这个问题不够充分。更新了问题。在regex101.com-link中,每秒的结果是否为空
match1='keyword 1',match2='
等等……我想你可以很容易地从数组中过滤出空字符串。
preg\u match(“/^\[^\[^\\\\n]*(?:\\\\[^\\\n]*{2,}\]$/”,$string,$matches)
所以我的结果是:$matches[1],$matches[2]$匹配[n]。对吗?不,它只匹配那一行。你想捕捉关键词吗?你能用预期的结果编辑这个问题吗?是的,很抱歉这个问题不够充分。更新了问题。在regex101.com-link中,每秒的结果是否为空
match1='keyword 1',match2='
等等……我认为你可以很容易地从数组中筛选出空字符串。你想要3个或更多吗?你需要两个单独的模式,一个用于验证字符串,另一个用于提取关键字。@AvinashRaj:Variable Number,这意味着该字符串中有一个或多个关键字(从[并以结尾])是否要输入3或更多?您需要两个单独的模式,一个用于验证字符串,另一个用于提取关键字。@AvinashRaj:Variable Number,这意味着该字符串中有一个或多个关键字(以[开头,以]结尾)是否要输入3或更多?您需要两个单独的模式,一个用于验证字符串,另一个用于提取关键字。@AvinashRaj:Variable Number,这意味着该字符串中有一个或多个关键字(以[开始]和[结束])您想要3个或更多?您需要两个单独的模式,一个用于验证字符串,另一个用于提取关键字。@AvinashRaj:Variable Number,这意味着该字符串中有一个或多个关键字(以[开始]和结束])@user3142695看起来很可怕,但一旦您阅读了文档(上面的链接)您将看到它有多么简单:)@AvinashRaj这里确实不需要
(?=…)
,它只控制要获取的结果数量…删除它将提供与您类似的模式,因此我将离开it@user3142695这看起来很吓人,但一旦你读了文件(上面的链接)您将看到它有多么简单:)@AvinashRaj这里确实不需要
(?=…)
,它只控制要获取的结果数量…删除它将提供与您类似的模式,因此我将离开it@user3142695这看起来很吓人,但一旦你读了文件(上面的链接)您将看到它有多么简单:)@AvinashRaj这里确实不需要
(?=…)
,它只控制要获取的结果数量…删除它将提供与您类似的模式,因此我将离开it@user3142695这看起来很吓人,但一旦你读了文件(上面的链接)您将看到它有多么简单:)@AvinashRaj这里确实不需要
(?=…)
,它只控制要获取的结果数量……删除它将提供与您类似的模式,因此我将保留它