10
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Pythonのre.subで正規表現置換するグループ番号の後に数字を置きたい時の書き方

この記事ではPython 2.7を使用して確認しています。

グループ置換の基本

re.sub()を使用して正規表現のグループ置換をしたいとき、通常はこのように書く。
(※ グループ番号1の前に'\'を2回書くのに注意)

re.sub(r'(hoge)', '\\1bar', 'hogefoo')
# 結果:
# 'hogebarfoo'

エラーになるケース

しかし、この書き方だとグループ番号の後に数字を置きたい場合、以下のようなエラーになってしまう。

# '第三'を'第3'にしたい
re.sub(r'(第)三', '\\13', '第三')
# 結果:
# ...
# raise error, "invalid group reference"
# sre_constants.error: invalid group reference

これはグループ番号が1ではなく(上記の例では)13として認識されてしまうためである。

対応方法

このようなときは、以下のように書くことで解決できる。

re.sub(r'(第)三', '\g<1>3', '第三')
# 結果:
# 第3
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
10
Help us understand the problem. What are the problem?