我需要使用包含双引号的preg_match来提取双引号之间的任何符号的字符串。
我已在下面的问题中尝试了所有解决方案,但对我的案例没有任何效果: php to extract a string from double quote
示例字符串:" ASD"" ASD ADS"""
我需要提取:ASD"" ASD ADS""
当前正在运行的代码,除了我不知道如何处理上面破坏整个结构的异常:
$regex = '/"(.*)"/imU';
$content = file_get_contents($file->getRealPath());
$filename = $file->getClientOriginalName();
preg_match_all($regex, $content, $matches);
return $matches[0];
答案 0 :(得分:0)
在开口之间正确使用2个相邻的双引号 并关闭双引号,您必须使用2个替代方案: 要么是而不是双引号,要么连续2次 双引号。
所以正则表达式可以如下:
/"(?:[^"]|"")+"/g
说明
"
- 匹配“开场”双引号。(?:
- 由于+
而需要启动非捕获组
量化后。
[^"]
- 第一个选择 - 除了。之外的任何字符
双引号。|
- 或者。
""
- 两个双引号。)
- 非捕获组的结束。+
- 此群组可以出现一次或多次。"
- 匹配“结束”双引号。仅使用g
选项就足够了。