Regex 正则表达式问题:名称捕获、预匹配

Regex 正则表达式问题:名称捕获、预匹配,regex,preg-match,Regex,Preg Match,给定以下字符串: application/pdf; name=a.pdf application/pdf; name="b.pdf" application/pdf; name="c.pdf application/pdf; name=d.pdf" 在名为“filename”的捕获中,我需要以下值: 以下正则表达式适用于a.pdf,但由于双引号,其余正则表达式均失败: name=(?<filename>.*) name=(?*) 有什么建议可以让我得到剩下的吗?谢谢。试试这个:

给定以下字符串:

application/pdf; name=a.pdf
application/pdf; name="b.pdf"
application/pdf; name="c.pdf
application/pdf; name=d.pdf"
在名为“filename”的捕获中,我需要以下值:

以下正则表达式适用于
a.pdf
,但由于双引号,其余正则表达式均失败:

name=(?<filename>.*)
name=(?*)
有什么建议可以让我得到剩下的吗?谢谢。

试试这个:

/name="?(?<filename>[^"]*)"?/
/name=“?(?[^”]*)”/

注意,这将匹配
application/pdf;name=b.pdf”
-即不平衡引用,但它认为这是正确的。第四个示例就是这样的,所以我认为匹配也是有趣的,但它也不起作用。它匹配:
a.pdf
application/pdf;name=
c.pdf
application/pdf;name=d.pdf
@StackOverflowNewbie:您是否传递任何标志以忽略换行符?我不确定PHP正则表达式是如何工作的。尝试附加一个
$
/name="?(?<filename>[^"]*)"?/