我有如下字符串:
\"Some text inside here. And perhaps special chars including newlines...\" then more text (out here)
我如何简单地匹配并返回转义双引号之间的内容,丢弃其余内容?
最佳答案
你不能使用这种模式:
\".*\"
因为“点”不匹配换行符,除非你使用标志“s”使“点”匹配所有内容(包括换行符)
甚至更多此模式与此示例不匹配:
"this is a quoted text" and "this is another one"
上面的模式将匹配整个字符串而不是两个引用的文本。 (因为 .* 是贪婪的并且会匹配它可以匹配的最长字符串,在本例中是整个字符串。)您应该使用 .*?这使得模式“勉强”并且它会匹配它可以匹配的最短字符串。
因此,为了将其包装起来,您可以将此模式与标志“s”(点匹配所有)一起使用:
\".*?\"
或者使用这个:
\"[^"]\"
不需要“s”标志。 (因为 [^"] 匹配除包括换行符的 "以外的任何内容。)
(我不熟悉 PHP 语法,所以您应该自己注意应用标志和转义字符。)
关于php - 正则表达式:如何匹配转义的双引号字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679717/