복붙노트

[PYTHON] Python은 일치하는 내용으로 다시 대체합니다.

PYTHON

Python은 일치하는 내용으로 다시 대체합니다.

파이썬에서 정규 표현식을 사용하려고 시도하면서 URL의 일부로 강조 표시된 일부 HTML을 출력하려고합니다. 내 입력은

images/:id/size

내 결과물이 있어야 해.

images/<span>:id</span>/size

내가 자바 스크립트에서 이렇게하면

method = 'images/:id/size';
method = method.replace(/\:([a-z]+)/, '<span>$1</span>')
alert(method)

원하는 결과를 얻지 만, 파이썬에서 이것을하면

>>> method = 'images/:id/huge'
>>> re.sub('\:([a-z]+)', '<span>$1</span>', method)
'images/<span>$1</span>/huge'

파이썬이 $ 1이 아닌 올바른 결과를 반환하도록하려면 어떻게해야합니까? 이 기능을 수행하는 데 올바른 기능이 있습니까?

해결법

  1. ==============================

    1.$ 1 대신 \ 1을 사용하면됩니다.

    $ 1 대신 \ 1을 사용하면됩니다.

    In [1]: import re
    
    In [2]: method = 'images/:id/huge'
    
    In [3]: re.sub(r'(:[a-z]+)', r'<span>\1</span>', method)
    Out[3]: 'images/<span>:id</span>/huge'
    

    정규 표현식에 대해서는 원시 문자열 (r '...')을 사용합니다. 틀림없이 코드를 약간 더 가독성있게 만드는 것은 백 슬래시를 벗어날 필요가 없습니다.

  2. ==============================

    2.$ 1 대신 \ 1을 사용하십시오.

    $ 1 대신 \ 1을 사용하십시오.

    http://docs.python.org/library/re.html#regular-expression-syntax

  3. ==============================

    3.대체 부분에서, 파이썬은 펄, 자바, 자바 스크립트 (다른 ​​것들과 달리)가 $ 1이 아닌 sed와 vi와 같은 방식으로 \ 1을 사용합니다. 게다가 \ 1은 U + 0001의 문자로 일반 문자열을 보간하기 때문에, 원시 문자열이나 \ escape를 사용할 필요가 있습니다.

    대체 부분에서, 파이썬은 펄, 자바, 자바 스크립트 (다른 ​​것들과 달리)가 $ 1이 아닌 sed와 vi와 같은 방식으로 \ 1을 사용합니다. 게다가 \ 1은 U + 0001의 문자로 일반 문자열을 보간하기 때문에, 원시 문자열이나 \ escape를 사용할 필요가 있습니다.

    Python 3.2 (r32:88445, Jul 27 2011, 13:41:33) 
    [GCC 4.0.1 (Apple Inc. build 5465)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> method = 'images/:id/huge'
    >>> import re
    >>> re.sub(':([a-z]+)', r'<span>\1</span>', method)
    'images/<span>id</span>/huge'
    >>> 
    
  4. from https://stackoverflow.com/questions/7191209/python-re-sub-replace-with-matched-content by cc-by-sa and MIT license