7

次の複数行の文字列を考えてみましょう:

>> print s
shall i compare thee to a summer's day?
thou art more lovely and more temperate
rough winds do shake the darling buds of may,
and summer's lease hath all too short a date.

re.sub()andの出現箇所をすべて次のように置き換えますAND

>>> print re.sub("and", "AND", s)
shall i compare thee to a summer's day?
thou art more lovely AND more temperate
rough winds do shake the darling buds of may,
AND summer's lease hath all too short a date.

ただし、行頭への固定re.sub()は許可されていないため、追加しても置換されることはありません。^and

>>> print re.sub("^and", "AND", s)
shall i compare thee to a summer's day?
thou art more lovely and more temperate
rough winds do shake the darling buds of may,
and summer's lease hath all too short a date.

re.sub()行頭( ^) または行末 ( $) アンカーを使用するにはどうすればよいですか?

4

2 に答える 2

21

複数行モードを有効にするのを忘れました。

re.sub("^and", "AND", s, flags=re.M)

re.M
re.MULTILINE

指定すると、パターン文字'^'は文字列の先頭と各行の先頭 (各改行の直後) で一致します。パターン文字'$'は、文字列の末尾と各行の末尾 (各改行の直前) で一致します。デフォルトでは、文字列の先頭、文字列の末尾、および文字列の末尾の改行 (存在する場合) の直前'^'のみに一致します。'$'

ソース

flags 引数は、2.7 より古い Python では使用できません。そのような場合は、次のように正規表現で直接設定できます。

re.sub("(?m)^and", "AND", s)
于 2013-07-15T07:39:42.663 に答える
9

複数行に追加(?m):

print re.sub(r'(?m)^and', 'AND', s)

こちらのドキュメントを参照してください。

于 2013-07-15T07:40:17.910 に答える