4

Ruby で Fortran コードからシンボルを抽出したいと考えています。シンボルには次のパターンがあります (注: 変数の型と属性の部分は除外されています)。

a = b, c(2)       ! Match result should be "a" and "c"
d(3) = [1,2, &    ! Match result should be "d"
  3]

私が試した正規表現は((?<!=)\w+(?![^\[]*\]+)(?=( |,|\(|$)))詰めlookaround物です。しかし、 の制限によりlookbehind、「= *」を一致させて を除外することはできませんb

テストには Rubular を使用しました。ご参考までに、 こちら をご覧ください

前もって感謝します!

4

3 に答える 3

2

正規表現を機能させるには、最初にすべての末尾の空白を置き換えます=

.gsub(/=\s+/, '=').scan(/((?<!=)\w+(?![^\[]*\]+)(?=( |,|\(|$)))/)
于 2013-04-10T06:54:10.663 に答える
0

簡単にできることの 1 つは、(「=」で) 行を 2 つに分割し、左側のオペランドでのみ正規表現を実行することです。

そうすれば、複雑な正規表現を書く必要はありません。

于 2013-04-10T06:50:04.097 に答える
0

私のアドバイスは、正規表現を 2 つの式に分けることです。正規表現は常にワンライナーである必要はありません。

于 2013-04-10T06:50:59.303 に答える