Php 花括号之间的正则表达式匹配产生的结果太多
我有一堆文本,例如:Php 花括号之间的正则表达式匹配产生的结果太多,php,regex,match,curly-brackets,Php,Regex,Match,Curly Brackets,我有一堆文本,例如: fooabcdefhjkldh389dn{pdf}images/1.pdf,100%,500{/pdf}hfnkjt8499duidjglkj 我想摘录以下内容: {pdf}images/1.pdf,100%,500{/pdf} 这是我做的一个正则表达式: {pdf}(.*){/pdf}# 检查我得到的结果时: 数组 ( [0]=>{pdf}图像/1.pdf,100%,500{/pdf} [1] =>图像/1.pdf,100%,500 ) 我希望只获取数组中的第一项
fooabcdefhjkldh389dn{pdf}images/1.pdf,100%,500{/pdf}hfnkjt8499duidjglkj
我想摘录以下内容:
{pdf}images/1.pdf,100%,500{/pdf}
这是我做的一个正则表达式:
{pdf}(.*){/pdf}#
检查我得到的结果时:
数组
(
[0]=>{pdf}图像/1.pdf,100%,500{/pdf}
[1] =>图像/1.pdf,100%,500
)
我希望只获取数组中的第一项,但实际上有两项。
我正在使用PHP,为了进行测试,我使用了以下网站:
如何仅获取
{pdf}…{/pdf}
文本?使用非捕获组以确保中心文本不会在数组中显示为反向引用,并使用零宽度断言以确保{pdf}
部分不属于匹配:
#(?<={pdf})(?:.*?)(?={/pdf})#
使用非捕获组,以确保中心文本不会在数组中显示为反向引用,并使用零宽度断言以确保
{pdf}
部分不是匹配的一部分:
#(?<={pdf})(?:.*?)(?={/pdf})#
您可以在正则表达式中使用组。在你的情况下,团队是
(.*?)
这导致PHP向您提供完整的结果{PDF}sometext{/PDF}和在第一个组中找到的sometext
只需尝试以下操作即可摆脱该组:
#{pdf}.*?{/pdf}#
您可以在正则表达式中使用组。在你的情况下,团队是
(.*?)
这导致PHP向您提供完整的结果{PDF}sometext{/PDF}和在第一个组中找到的sometext
只需尝试以下操作即可摆脱该组:
#{pdf}.*?{/pdf}#
你没有两个结果 这里的问题(虽然不是问题)是可能使用了函数。此函数返回整个匹配查询,即
{pdf}images/1.pdf,100%,500{/pdf}
,以及最终结果,即images/1.pdf,100%,500
因此,您只需要使用
$result[1]
进行进一步的解析。您没有两个结果
这里的问题(虽然不是问题)是可能使用了函数。此函数返回整个匹配查询,即{pdf}images/1.pdf,100%,500{/pdf}
,以及最终结果,即images/1.pdf,100%,500
因此,您只需要使用$result[1]
进行进一步的解析