LoginSignup
9
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-18

この記事では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
9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10