我知道这个话题被问了很多,但我找不到我的问题的答案:
在所附的图像中有许多不同的缓冲区,我希望只匹配名称中包含“Lut”的缓冲区(注意图像中的字符串中有 2 个匹配项)。我遇到的问题是匹配项还包含我想要的缓冲区之前的缓冲区。
我是正则表达式的新手,仍在努力学习,所以任何解释都将不胜感激。
谢谢! :)
附上绳子是为了让您感到舒适(如果需要):
<?xml version="1.0" encoding="utf-8"?>
<pimp xmlns:dt="urn:schemas-microsoft-com:datatypes">
<dllPath>C:\ReplayCode\Apps\Pimp</dllPath>
<buffers>
<buffer name="InputMask">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="MaskErode">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="BlablaLutBla">
<width>256</width>
<height>256</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="MaskClose">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="InputVis">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>3</channels>
<type>IMG</type>
</buffer>
<buffer name="AddMaskEdge">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="EdgeVis">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>3</channels>
<type>IMG</type>
</buffer>
<buffer name="GrayEdge">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="EdgeMaskMulThreshold">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
<buffer name="MaskMulEdge">
<width>5120</width>
<height>3072</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
</buffers>
我试过的正则表达式是这样的:
<buffer name=".*?Lut.*?">.*?<\/buffer>
我预计有 2 场比赛:
<buffer name="BlablaLutBla">
<width>256</width>
<height>256</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
和
<buffer name="2ndLutBlabla">
<width>256</width>
<height>256</height>
<data>UCHAR</data>
<channels>1</channels>
<type>IMG</type>
</buffer>
请您参考如下方法:
您可以使用 BeautifulSoup 来解析您的标签。
import re
from bs4 import BeautifulSoup
input_xml = ''' some xml '''
soup = BeautifulSoup(input_xml, "lxml-xml")
print soup.find_all('buffer', attrs={"name": re.compile('Lut')})
如果你还没有安装这个:
pip install beautifulsoup4
pip install lxml
