我正在搜索 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/