1

次のパターンのインスタンスをコードベースで検索しようとしています。

m_vParts[foo] = 

そして、空白が変化する同様のインスタンス。だから私はこの正規表現に追いつくことができます:

m_vParts\[.*\]\s*=[^=]\s*

http://gskinner.com/RegExr/や他の正規表現テスタータイプのサイトでこれをテストすると、まさに私が欲しいものが見つかります。ただし、実際にgrep(またはegrep)結果が得られない場合。grep私の推測では、私の正規表現は、の正規表現の方言に対して整形式ではありませんが、どこにいるのか正確にはわかりません。

これが私が与える実際のコマンドです:

[e]grep -Irn "m_vParts\[.*\]\s*=[^=]\s*" .

一重引用符と二重引用符の両方で試しました。

コードベースの例であるコードの小さなサンプルを次に示します。

pcTab->m_vParts[iLastPart] = pcPart;
if ( m_pcCurrentTab->m_vParts[i]== pcPart )

最初の行は一致し、2番目の行は一致しないと思います。

また、Windows7x64でGnuWin32grepを使用していることに注意してください。

ここでのガイダンスに事前に感謝します。自動化されていない検索を避けようとしています:)

4

1 に答える 1

1

reの周りに引用符を追加するだけです:

$ vim 1.txt
$ egrep 'm_vParts\[.*\]\s*=[^=]\s*' 1.txt
pcTab->m_vParts[iLastPart] = pcPart;

ご覧のとおり、すべてが機能します。

于 2012-07-23T19:43:19.293 に答える