使用PHP8,我正在努力找出如何有条件地匹配一些可能出现在字符串中或可能不出现在字符串中的键. 我想要两个都匹配的
-----------key=xyz---------------
和
--------------------------
破折号("-")可以是任何非空格字符,这里仅用于清洁工阅读示例.
正则表达式匹配"key=..."如果它的包含组是贪婪的,如下所示. 但这是不够的,因为完全匹配将失败,因为"key=xyz"缺少主题字符串.
/
(\S*)?
(key\=(?<foundkey>[[:alnum:]-]*))
\S*
/x
如果捕获组是非贪婪,那么正则表达式将忽略与任何"key=xyz"匹配的键
/
(\S*)?
(key\=(?<foundkey>[[:alnum:]-]*))?
\S*
/x
我试着在这regex101 example中调试,但没有弄清楚.
我使用多个正则表达式解决了这一问题,但希望有人能帮助解决我的误解,这样我就知道如何将其作为一个正则表达式来工作. 谢谢