我有一根这样的绳子:
str='< TOPICS>< D>cocoa< /D>< /TOPICS>< PLACES>< D>el-salvador< /D>< D>usa< /D>< D>uruguay< /D>< /PLACES>'
我想在<;PLACES>;和<;/PLACES>;中获取<;D>;和<;/PLACES>;之间的字符串;。 我知道流动:
p1=re.compile(r'(?<=<PLACES>)(.*?)(?=</PLACES>)')
p2=re.compile(r'(?<=<D>)(.*?)(?=</D>)')
有了p1和p2,我就能得到萨尔瓦多,美国,乌拉圭。但是我怎样才能只使用一个p来获取信息。在
您可以使用这样的正则表达式:
regex101 demo
其中肯定的lookahead
(?=(?:(?!<PLACES>).)*</PLACES>)
确保前面某处有一个</PLACES>
,在匹配的内容和结束标记之间没有任何开头<PLACES>
。在但您确实应该考虑使用适当的解析器,例如BeautifulSoup:
^{pr2}$编辑:根据JonClements在评论中的建议,您还可以使用:
相关问题 更多 >
编程相关推荐