2

私はこれを perl/sed で解決するために非常に多くの方法を試し、否定的な先読みなどについてかなり読んでみましたが、それでも一致は機能しません。
次のような行があります:-

for (vector<some__header>::const_iterator header = some__header_->begin(); header != some__header_->end(); ++header)  

for (vector<some__trailer>::const_iterator header = some__trailer_->begin(); header != some__trailer_->end(); ++header)  

ある__に一致するテキストを他の__に置き換えたいが、ある値に一致するテキストは置換したくない___

したがって、最初の行でいくつか他のものに置き換えると、次のようになります:-

for (vector<other__header>::const_iterator header = some__header_->begin(); header != some__header_->end(); ++header)  

明らかに、(perlで)のようなもの:-

(some)__([a-zA-Z]*)(?!_)

some__headeにも一致するため、機能していません。
私が見逃している魔法の正規表現の部分は何ですか?

4

3 に答える 3

1

あなたは言えた:

sed 's/some__header[^_]/other__value/g' filename

また、

sed 's/some__[^_]*[^_]/other__value/g' filename

onlysomeを に置き換える場合は、次のようotherに言います。

sed 's/some__\([^_]*\)[^_]/other__\1/g' filename
于 2013-11-07T14:13:56.120 に答える