1

文字列で指定された文字(=としましょう)の最初の出現を見つける方法を見つけようとしています。これは簡単ですが、引用符で囲まれていない場合にのみ、その位置が必要です。

たとえば、この場合:

  foo = bar 

最初の = の位置が必要ですが、この場合:

  "foo = bar" = baz

2番目の=の位置が欲しい。

ここで同様の質問を見つけましたが、分割ではなく位置が必要です。そして、エスケープされた引用符 \" または \' を処理できる必要があるため、この問題に対して文字列ベースのアプローチを使用することはできないと思います.

私のアイデアの 1 つは、lex を使用することでした。= の最初の出現を見つけることができる正規表現ベースの構文分析による分析ですが、かなり重いようです:)

4

1 に答える 1

4

次のように、引用符をネストできないため、これは正規表現で可能です。

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

最終的に一致したグループのインデックス位置を見つける必要があります(=)

デモ: http://www.rubular.com/r/jt5CSIaOjo

于 2012-07-13T14:09:41.530 に答える