2

単一の文字を別のものに置き換えようとして$いて、複数の文字を連続して無視したいのですが、$その方法がわかりません。私は先読みを使ってみました:

s='$a $$b $$$c $d'
re.sub('\$(?!\$)','z',s)

これは私に与えます:

'za $zb $$zc zd'

私が欲しいのはいつ

'za $$b $$$c zd'

私は何を間違っていますか?

4

4 に答える 4

2

OK、ルックアラウンドなし、コールバック関数なし:

re.sub('(^|[^$])\$([^$]|$)', '\1z\2', s)
于 2013-07-14T23:40:57.107 に答える
0

との代替re.split

''.join('z' if x == '$' else x for x in re.split('(\$+)', s))
于 2013-07-15T00:10:02.050 に答える