당신은 파이썬의 표준 SGML/HTML/XML 파싱 모듈의 전원을 활용할 수 있습니다, 당신은 위해이 대체 할 수 있습니다 "[]"에 대한 "<>"그것을 대체 할 안전한지 유효한 XML을 생산, 표준 라이브러리 XML 파싱 기능을 구문 분석 할 수 있습니다 :
import string
from xml.etree import ElementTree as ET
text = '[caption id="get this" align="and this" width="and this" caption="and this"]this too please[/caption]'
xml_text = string.translate(text, string.maketrans('[]', '<>')) # Conversion to XML
parsed_text = ET.fromstring(xml_text) # Parsing
# Extracted information
print "Text part:", parsed_text.text
print "Values:", parsed_text.attrib.values()
이 제대로 인쇄 :
Text part: this too please
Values: ['and this', 'and this', 'get this', 'and this']
이 방법의 장점은 것입니다을 (1) 많은 사람들이 알고있는 표준 모듈을 사용합니다. (2) 명시 적으로 당신이하고 싶은 것을 보여줍니다; (3) 더 많은 정보를 쉽게 추출하고 더 복잡한 값 (큰 따옴표가 포함 된 값 포함)을 처리 할 수 있습니다.
출처
2011-09-02 14:20:10
EOL
프로그래밍 언어에 따라 표현식에 NONGREEDY 수정 기호를 추가 할 수 있습니다. –
좋은, 그 일을 했어! 또한 토큰 구문이 // %가 아닌 것을 잊어 버렸고 작동하지 않았습니다. re.sub (r '\ [caption id = "([^"] *) "align ="([^ "] *)"width = ","토큰 : \\ 1 \\ 2 \\ 3 \\ 4 "([^"] *) "캡션 = \\ 5 ", self.content, re.IGNORECASE) – Clash
@Clash : 토큰 구문에 대한 부분을 포함하도록 답변을 업데이트했습니다. – Asaph