【问题标题】:Get characters which are not in brackets REGEX获取不在括号内的字符 REGEX
【发布时间】:2019-04-24 20:06:46
【问题描述】:

我基本上是在构建自定义查询。我将模式设计为​​ field_set 和 sub_field_sets。示例查询:

({e:3}.{f:44}.{f:2}) + ( 
                   ({e:3}.{f:44}.{f:3}) + ({e:3}.{f:44}.{f:4}) 
                        ) - ({e:3}.{f:44}.{f:5})

我想使用 REGEX 从 root 获取所有运算符。在这种情况下应该导致 ['+', '-'] 和 NOT ['+', '+', '-']

【问题讨论】:

  • 很不清楚你在问什么。您需要提供更多示例,向我们提供可能的运算符列表等。根据您发布的内容,对每个运算符使用 strpos($query, $operator) !== false 应该可以工作,至少......

标签: php regex regex-negation regex-group regex-recursion


【解决方案1】:

这适用于给定的样本:

([+-])(?![^+)-]+\)\s*\))

【讨论】:

  • 您可以通过删除字符类中+- 的转义符来稍微缩短正则表达式。如果这些只是字符类中的字符,则不需要它们。
  • 您错过了[^+\-)] 中的斜线,甚至还保存了一个字节:P 只需将- 作为字符类中的最后一个字符移动:P
猜你喜欢
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
相关资源
最近更新 更多