php - 如何使用 preg_match_all 使用正则表达式模式将字符串转换为数组
问题描述
如何将下面的挑战字符串分隔为具有正则表达式模式的数组?
例如:
$str = '{varA: "value, A", varB: "value:B", varC: "value C", varD: "value\"D\""}';
// remove both curved brackets
$trimStr = substr($str, 1, strlen($str)-1);
preg_match_all("/(.*?):\"(.*?)\",/sm", $trimStr, $m); // would like the regex to ignore the ',' and double quote in the value string too
进入一个数组,其中
arr[0] = 'varA: "value, A"';
arr[1] = 'varB: "value:B"';
arr[2] = 'varC: "value C"';
arr[3] = 'varC: "value \"D\""';
解决方案
在您的示例中,您似乎根本不需要使用正则表达式,只需删除大括号并将字符串分解为数组即可。由于您的元素已经用逗号分隔,因此只需使用正确的分隔符。
$arr = explode(', ', $str);
但是,如果您坚持使用正则表达式,这里有一个匹配您的元素的表达式:
var\w+\:\s\".+?(?=\,|})
推荐阅读
- php - PHP如何防止foreach覆盖外部变量
- node.js - Ansible 使用 nvm 安装节点
- java - 无法在 Ubuntu 中将 Jetty9 安装为服务
- javascript - 如何使用 html/javascript 从 oauth 授权流解析重定向 URL
- json - 修改 Json 使用成 React 漂亮的拖放
- c++ - 如何为 Doxygen 样式的文件头配置 CLion?
- php - API 搜索中不允许的方法
- mysql - 在 mysql 工作台中正向工程 ER 图时出现错误 1064
- python - 成本函数不断增加
- powershell - 表达式或语句中出现意外的标记“-UFormat”