簡體   English   中英

幫助多行正則表達式匹配

[英]Help with multiline regex match

我試圖讓一個正則表達式匹配一個跨越多行的值。 我正在使用re.S標志,但仍然沒有結果。 有什么想法嗎?

這是我正在搜索的文本:

<File id="abc.txt" EngRev="74">
  <Identifier id="STRING_ID" isArray="1" goesWith="3027253">
    <EngTranslation>"Value 1","Value 2","Value 3","Value 4","Value 5",</EngTranslation>
    <LangTranslation filename="abc.txt" key="STRING_ID 0">Value 1</LangTranslation>
    <array filename="abc.txt" key="STRING_ID 1">Value 2</array>
    <array filename="abc.txt" key="STRING_ID 2">Value 3</array>
    <array filename="abc.txt" key="STRING_ID 3">Value 4</array>
    <array filename="abc.txt" key="STRING_ID 4">Value 5</array>
  </Identifier>
  <Identifier id="STRING_ID2" isArray="0" goesWith="3027253">
    <EngTranslation>"Value 1"</EngTranslation>
    <LangTranslation filename="abc.txt" key="STRING_ID2">Value 1</LangTranslation>
  </Identifier>
</File>

這是我用來獲得匹配的代碼:

def updateToArray(matchobj):
     return matchobj.group(0).replace('LangTranslation','array')
outXML = re.sub(r'<Identifier.*?<array.*?</Identifier>', updateToArray, outXML, re.S)

我強烈建議您不要使用正則表達式來解析XML。 SO有很多 問題/答案線程解釋為什么。 例如看這個經典

由於您使用的是Python,為什么不使用BeautifulSoupLxml之類的庫更簡潔地完成這項工作?

您缺少一個參數:

re.sub(pattern, repl, string[, count, flags])

這些標志似乎是整數,因此將re.S視為count參數。 count使用零count保留默認行為,並允許您將標志作為第五個參數傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM