php - 使用正则表达式检测带引号的引号
问题描述
我正在寻找一种方法来检测和删除引号中的引号,例如:某事“某事”某事“某事”某事。
如您所见,在上面的示例中,斜体的东西用双引号括起来。我想从这些外引号中去掉里面的字符串。
因此,表达式应该简单地查找引号之间的文本加上另一组文本换行文本,然后删除最后一个换行的引号。
这是我当前的代码(php):
preg_match_all('/".*(".*").*"/', $text, $matches);
if(is_array($matches[0])){
foreach($matches[0] as $match){
$text = str_replace($match, '"' . str_replace('"', '', $match) . '"', $text);
}
}
解决方案
如果字符串以 a 开头"
并且字符串内的双引号始终是平衡的,您可以使用:
这将匹配字符串开头的双引号,然后使用SKIP FAIL跳过该匹配项。然后它会 match "
,在一个组中捕获介于 the"
和 match a之间的内容"
。
在替换中,您可以使用捕获组 1$1
$pattern = '/^"(*SKIP)(*F)|"([^"]+)"/';
$str = "\"something \"something something\" and then \"something\" something\"";
echo preg_replace($pattern, "$1", $str);
“某事某事某事然后某事某事”
推荐阅读
- django - ReactJS 和 Django 与 Axios - CSRF 令牌和带有 POST 请求的表单数据
- php - 如何修复 'WebSocket 连接到 'wss://
'失败:WebSocket 打开握手超时'? - amazon-ec2 - AWS 上的 NVMe 到底是什么?
- typescript - 如何对firebase firestore中的节点求和?
- java - 如何用复杂的 json 填充 Jtable
- laravel - 如何允许外部自定义域在我的服务器上运行 Laravel 应用程序?
- git - 在 Git Bash 中向 Azure DevOps 创建拉取请求
- c# - ASP.NET CORE 中的 Unity(依赖注入)就像我们在 ASP.NET 框架中所拥有的一样
- python - Numpy 数组引用在 for 循环中表现异常
- javascript - 如何将 JSON 数据从 express 传递到 pug 中的 javascript/jQuery 脚本?