php - 单词 null 或双引号中的字符串的正则表达式

标签 php json regex

我正在搜索 JSON 格式的文本 block 。用另一种方法可能更容易,但我想看看这是否可行。我在 PHP 7.x 中使用 preg_match_all(),但这更多是一个正则表达式问题。

有时文本中的字符串是这样的 "something":"a string, here!", 有时它是这样的 "something":null,> .

对于第一种情况,这会起作用......

/"某事":"([^"]*)",/

对于第二种情况,这会起作用......

/"something":null,/

/"某事":([^,]*),/

有没有办法在同一个正则表达式中匹配这两种情况?

这样的东西不起作用......

/"something":"?(null|[^"]*)?"?,/

字符串中可以有逗号,但这是行不通的...

/"某事":(null|[^,]*),/

有人知道这是否可行吗?谢谢。

最佳答案

您使用 PHP 的事实至关重要,因为您可以使用

"something":(?|"([^"]*)"|(null)),

请参阅regex demo .

详细信息:

  • "something": - 文字字符串
  • (?|"([^"]*)"|(null)) - a branch reset group : ",第 1 组:任意零个或多个字符除了 " 之外,还有 "null 字符串也被捕获到组 1
  • , - 逗号。

关于php - 单词 null 或双引号中的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66173899/

相关文章:

javascript - 解析半结构化值

java - 有没有一种快速识别 String 或 TextView 中的 HTML ASCII 代码的方法?

java - 匹配可能为 double 或不是 double 的可能负数

php - Netbeans PHP/javascript 突出显示

javascript - 带有响应数组 [] 的 jQuery Ajax PHP POST 方法已发送数据。如何获得响应中的发送值?

C++ libcurl PATCH 请求无法通过 .str.c_str() 进行字符串流转换

javascript - backbonejs-当 json 响应用域书包装时,无法渲染集合对象的字段

c# - 正则表达式拆分逗号分隔的大括号,应该很简单

php - 如何使用 `npm` 在 PHP 中执行使用 `exec()` 命令安装的命令?

php - 显示由类别和/或标签确定的 mySQL 图像