<p>是的,您可以使用<a href="http://lxml.de/xpathxslt.html#regular-expressions-in-xpath" rel="noreferrer">regular expressions in lxml xpath</a>。在</p>
<p>以下是一个例子:</p>
<pre><code>results = root.xpath(
"//*[re:test(local-name(), '^TEXT.*')]",
namespaces={'re': "http://exslt.org/regular-expressions"})
</code></pre>
<p>当然,在您提到的示例中,并不需要正则表达式。您可以使用<a href="http://www.w3schools.com/xpath/xpath_functions.asp#string" rel="noreferrer">^{<cd1>}</a>xpath函数:</p>
^{pr2}$
<p>完整程序:</p>
<pre><code>from lxml import etree
root = etree.XML('''
<root>
<TEXT1>one</TEXT1>
<TEXT2>two</TEXT2>
<TEXT3>three</TEXT3>
<x-TEXT4>but never four</x-TEXT4>
</root>''')
result1 = root.xpath(
"//*[re:test(local-name(), '^TEXT.*')]",
namespaces={'re': "http://exslt.org/regular-expressions"})
result2 = root.xpath("//*[starts-with(local-name(), 'TEXT')]")
assert(result1 == result2)
for result in result1:
print result.text, result.tag
</code></pre>
<hr/>
<p>为了满足新的需求,请考虑以下XML:</p>
<pre><code><root>
<tag>
<TEXT1>one</TEXT1>
<TEXT2>two</TEXT2>
<TEXT3>three</TEXT3>
</tag>
<other_tag>
<TEXT1>do not want to found one</TEXT1>
<TEXT2>do not want to found two</TEXT2>
<TEXT3>do not want to found three</TEXT3>
</other_tag>
</root>
</code></pre>
<p>如果要查找所有<code>TEXT</code>元素,这些元素是<code><tag></code>元素的直接子元素:</p>
<pre><code>result = root.xpath("//tag/*[starts-with(local-name(), 'TEXT')]")
assert(' '.join(e.text for e in result) == 'one two three')
</code></pre>
<p>或者,如果希望所有<code>TEXT</code>元素都是第一个<code>tag</code>元素的直接子元素:</p>
<pre><code>result = root.xpath("//tag[1]/*[starts-with(local-name(), 'TEXT')]")
assert(' '.join(e.text for e in result) == 'one two three')
</code></pre>
<p>或者,如果只想找到每个<code>tag</code>元素的第一个<code>TEXT</code>元素:</p>
<pre><code>result = root.xpath("//tag/*[starts-with(local-name(), 'TEXT')][1]")
assert(' '.join(e.text for e in result) == 'one')
</code></pre>
<hr/>
<p>解决方法:</p>
<ul>
<li><a href="http://www.w3schools.com/xpath/" rel="noreferrer">http://www.w3schools.com/xpath/</a></li>
<li><a href="http://lxml.de/xpathxslt.html" rel="noreferrer">http://lxml.de/xpathxslt.html</a></li>
</ul>