正则表达式运算符OR - preg_match_all

时间:2015-06-09 16:45:52

标签: php preg-match-all

我有字符串{tender id="2,3"}{tender catid="2" id="2,3"}{tender catid="2"}

我用

$regex = "/{tender ((.*?id\s*=\s*['\"](.*?)['\"]) (.*?id\s*=\s*['\"](.*?)['\"]))}/";

但只有当我在字符串中同时包含id和catid ....如果只有一个参数在字符串中,我如何编写正则表达式?

1 个答案:

答案 0 :(得分:0)

尝试:{tender (?:cat)?id="(\d+,?)+"}

如果它不适合您,您可能需要指定其他详细信息。根据您的要求,只有当catidid位于数据结构中时才会匹配(例如,案例1和3)。

解释

  • {tender数据的开头。
  • (?:cat)?抓住cat,如果可以
  • id="获取id的开头
  • (\d+,?)+获取可能会或可能不会包含逗号的数字
  • "}数据结束。