特定のプレフィックスがない場合、文字列内のすべての数字を「#」に置き換えようとしています。数字は、単語の一部として表示される場合もあれば、単独の単語として表示される場合もあります。
たとえば、プレフィックスとして ABC を使用すると、これが望ましい結果になります。
入力:
sdkfjsd 12312981 sdkfjsdfhbnmawd 1298 ,smdfsdnfk2342423
sdlkfsdfs 20349 ABC1203912 2034234aac <-- ABC<number> stays, the other numbers do not
ABC1203912
結果 (2 行目と 3 行目に ABC と数字があることに注意してください):
sdkfjsd # sdkfjsdfhbnmawd # ,smdfsdnfk#
sdlkfsdfs # ABC1203912 #aac <-- ABC<number> stays, the other numbers do not
ABC1203912
私は regexp: の後ろに否定的な外観でそれをやろうとしましたs/(?<!ABC)\d+/#/g
。この場合、ABC の後の最初の桁のみが置き換えられず、残りは置き換えられます。
私の次のステップは、文字列を を含む部分に分割ABC\d+
し、他の部分で単純な置換を実行することです。
複数の文字列に分割せずに全体を行う方法についてのアドバイスをいただければ幸いです。
ありがとう!
編集 1: aac を適切な位置に戻しました。編集 2: 関連する場合に備えて、perl 5.8.5 を使用しています。私が制御していないコードとの互換性の問題により、新しいバージョンに更新できません。