如何在正则表达式中提取以特定字符串开头的双引号字段

时间:2019-10-29 12:43:11

标签: regex

我想从以下json文件中提取名称内容(David)和url内容(www.stackoverflow.com)。

我有几个问题:

如何提取以“开始”并以“结束”的字符串?

可以强制正则表达式以不属于匹配正则表达式的表达式开头。

gem 'bootsnap' unless (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)

2 个答案:

答案 0 :(得分:1)

注意:从长远来看,最合适的解析器是推荐这样做的方法。对于一个偶然的情况,正则表达式可能适合。


此正则表达式可以完成这项工作:

"name"\s*:\s*"(?'name'[^"]+)".*"url"\s*:\s*"(?'url'[^"]+)"

测试herenameurl组包含您的数据。

答案 1 :(得分:1)

我不建议使用正则表达式解决此问题。这样的临时解析解决方案往往容易出错,过于复杂,难以扩展,并且在您最不希望的情况下无法正常使用。

相反,我建议根据您使用的语言使用适当的json解析器。对于普通外壳,jq是一个不错的选择。这样,指定属性的路径就变得很简单了:

cat file.json | jq '.request.url'