![](/img/trans.png)
[英]Extract text between two substrings using regular expression multiline in python
[英]Python: Regular expression to extract text between any two tags in a html
我嘗試在HTML文件上使用"<.+>\\s*(.*?)\\s*<\\/?.+>"
。 以下是我使用的Python代碼
import re
def recursiveExtractor(content):
re1='(<.+>\s*(.+?)\s*<\/?.+>)'
m = re.findall(re1,content)
if m:
for (id,item) in enumerate(m):
text=m[id][1]
if text:print text,"\n"
f = """
<div class='a'>
<div class='b'>
<div class='c'>
<button>text1</button>
<div class='d'>text2</div>
</div>
</div>
</div>
"""
recursiveExtractor(f)
但是它會跳過一些文本,因為HTML是嵌套的,而regex從匹配部分的末尾重新開始搜索。
對於上述輸入,輸出為
<div class='b'>
<div class='d'>text2</div>
</div>
但是預期的輸出是:
text1
text2
編輯:我讀到HTML不是常規語言,因此無法解析。據我了解,無法解析。*(即使用相同的結束標記)。 但是我需要的是任何標簽之間的文本,例如text1 text2 text3所以我可以使用“ text1”,“ text2”,“ text3”的列表
為什么不這樣做:
import re
f = """
<div class='a'>
<div class='b'>
<div class='c'>
<button>text1</button>
<div class='d'>text2</div>
</div>
</div>
</div>
"""
x = re.sub('<[^>]*>', '', f) # you can also use re.sub('<[A-Za-z\/][^>]*>', '', f)
print '\n'.join(x.split())
這將具有以下輸出:
text1
text2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.