1

我试图弄清楚如何在字符串中找到第一次出现的指定字符(比如说=)。这很容易,但我想要那个 = 的位置,只有当它不在引号中时。

例如,在这种情况下:

  foo = bar 

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

  "foo = bar" = baz

我想要第二个=的位置。

我在这里发现了类似的问题,但我需要位置,而不是拆分。而且我必须能够处理转义引号 \" 或 \' 所以我认为我将无法使用基于字符串的方法来解决这个问题。

我的一个想法是使用 lex。使用基于正则表达式的语法分析进行分析,它可以为我找到第一次出现的 =,但它似乎相当沉重:)

4

1 回答 1

4

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

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

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

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

于 2012-07-13T14:09:41.530 回答