例えば:
blahblah|0A 4D 5E 43|adfsdasd|92| sgagrewas|12 5E|
になる必要があります
blahblahx0Ax4Dx5Ex43adfsdasdx92 sgagrewasx12x5E
私は次のようなことを試みています:re.sub(r'\|(\w+ ?)*\|', r'x\1', a)
しかし、最初の試合以上にそれを機能させるのに問題があります。
更新:正規表現はこれには適切ではないようです。pyparsingソリューションは実行可能でしょうか?
そうでない場合は、単純な反復ソリューションを作成できますが、より拡張可能なものをお勧めします。しかし、最初の試合以上にうまく機能させるのに苦労しています。
UPDATE2:私は最終的に純粋なPythonアプローチを使用しました。これは正常に機能し、エスケープ文字も処理できます。
def strtohex(self, string):
hexmode = False
hexstring = ''
i=0
while i<len(string):
if string[i] == '\\':
i += 1
#No escape charecters inside hex pipes
hexstring += string[i]
elif string[i] == '|':
hexmode = not hexmode
elif string[i] == ' ':
hexstring += '' if hexmode else ' '
else:
if hexmode:
hexstring += chr(int(string[i:i+2],16))
i += 1
else:
hexstring += string[i]
i += 1
return hexstring