Pythonの正規表現における集合内のキャレット記号
ご存知の通り、[ ] 内のキャレット記号は、
括弧の先頭に書かれると否定を行います。
つまり、これらの括弧内では特殊文字となります。
キャレット記号を文字として扱うには、
エスケープするか、先頭の位置から移動させる必要があります。
例
次の例では、検索パターンは以下の通りです:
最初の文字は 'd' 以外のすべての文字、
その後ろに 'x' が2文字続く:
txt = 'axx bxx ^xx dxx'
res = re.sub('[^d]xx', '!', txt)
print(res)
結果、変数には次の文字列が格納されます:
'! ! ! dxx'
例
次に、検索パターンは以下の通りです:最初の
文字は 'd' または '^'、
その後ろに 'x' が2文字続く:
txt = 'axx bxx ^xx dxx'
res = re.sub('[d^]xx', '!', txt)
print(res)
結果、変数には次の文字列が格納されます:
'axx bxx ! !'
例
キャレット記号を先頭から移動させなくても、 バックスラッシュでエスケープすれば、 文字そのものを意味するようになります:
txt = 'axx bxx ^xx dxx'
res = re.sub('[\^d]xx', '!', txt)
print(res)
結果、変数には次の文字列が格納されます:
'axx bxx ! !'
実践問題
次の文字列が与えられています:
txt = '^xx axx ^zz bkk @ss'
パターン:キャレット記号またはアットマーク記号、 その後ろにラテン文字が2文字続く に一致する文字列を 検索する正規表現を書いてください。
次の文字列が与えられています:
txt = '^xx axx ^zz bkk @ss'
パターン:キャレット記号でもアットマーク記号でもなく、 その後ろにラテン文字が2文字続く に一致する文字列を 検索する正規表現を書いてください。
次の文字列が与えられています:
txt = '^xx axx ^zz bkk'
パターン:キャレット記号でもスペースでもなく、 その後ろにラテン文字が2文字続く に一致する文字列を 検索する正規表現を書いてください。