查找非引号的第一个指定字符

时间:2012-07-13 14:05:27

标签: php regex

我试着弄清楚如何在字符串中找到指定字符的首次出现(让我们说=)。这很容易,但我想要的位置=只有当它不是引号时。

例如,在这种情况下:

  foo = bar 

我想要第一个=的位置,但在这种情况下:

  "foo = bar" = baz

我想要第二个位置=。

我在这里找到similar question,但我需要位置,而不是分裂。我必须能够处理转义引号“或”,所以我认为我不能使用基于字符串的方法解决这个问题。

我的一个想法是使用lex。使用基于regexp的语法分析进行分析,它可以找到我的第一次出现,但看起来相当沉重:)

1 个答案:

答案 0 :(得分:4)

这应该可以使用正则表达式,因为引号不能嵌套,如下所示:

^([^="]|"(\\"|[^"])*")*(=)

您需要找到最终匹配组(=)的索引位置。

演示:http://www.rubular.com/r/jt5CSIaOjo