我试着弄清楚如何在字符串中找到指定字符的首次出现(让我们说=)。这很容易,但我想要的位置=只有当它不是引号时。
例如,在这种情况下:
foo = bar
我想要第一个=的位置,但在这种情况下:
"foo = bar" = baz
我想要第二个位置=。
我在这里找到similar question,但我需要位置,而不是分裂。我必须能够处理转义引号“或”,所以我认为我不能使用基于字符串的方法解决这个问题。
我的一个想法是使用lex。使用基于regexp的语法分析进行分析,它可以找到我的第一次出现,但看起来相当沉重:)
答案 0 :(得分:4)
这应该可以使用正则表达式,因为引号不能嵌套,如下所示:
^([^="]|"(\\"|[^"])*")*(=)
您需要找到最终匹配组(=)
的索引位置。