diff --git a/cookbook/c02/p05_search_replace.py b/cookbook/c02/p05_search_replace.py index 4111f24..81aeaa1 100644 --- a/cookbook/c02/p05_search_replace.py +++ b/cookbook/c02/p05_search_replace.py @@ -20,6 +20,7 @@ def search_replace(): # 复杂的模式,使用sub() text = 'Today is 11/27/2012. PyCon starts 3/13/2013.' print(re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)) + print(re.sub(r'(?P\d+)/(?P\d+)/(?P\d+)', r'\g-\g-\g', text)) # 先编译 datepat = re.compile(r'(\d+)/(\d+)/(\d+)') diff --git a/source/c02/p05_search_and_replace_text.rst b/source/c02/p05_search_and_replace_text.rst index b301f04..73cb589 100644 --- a/source/c02/p05_search_and_replace_text.rst +++ b/source/c02/p05_search_and_replace_text.rst @@ -42,6 +42,16 @@ 'Today is 2012-11-27. PyCon starts 2013-3-13.' >>> +如果你使用了命名分组,那么第二个参数请使用 ``\g`` ,如下 + +.. code-block:: python + + >>> text = 'Today is 11/27/2012. PyCon starts 3/13/2013.' + >>> import re + >>> re.sub(r'(?P\d+)/(?P\d+)/(?P\d+)', r'\g-\g-\g', text) + 'Today is 2012-11-27. PyCon starts 2013-3-13.' + >>> + 对于更加复杂的替换,可以传递一个替换回调函数来代替,比如: .. code-block:: python