XPath正则表达式通过文本

时间:2015-07-30 18:44:59

标签: regex xml xpath text

我在文本中使用正则表达式有一个小问题。

我的XML文件部分看起来像这样

resipes.xml

 <text name="preparation">
   portion= 4 Person 
   time = 20 Minutes
   difficulty = medium
</text>

我想要的是在文本中搜索,例如为“部分”,只查看“4人”

我将非常感谢任何帮助 谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式模式来查找部分的值:

.+portion\s*=\s*(.+)

查看Debian's bc changelog

说明:

.+匹配任何字符,

portion匹配部分字符串

\s*=\s*匹配等号,包括前后空白字符(如果有),

(.+)捕获该行中的其余字符。

答案 1 :(得分:0)

normalize-space(
     substring-after(
          substring-before(//text/text(), "time"), 
          "portion="))

结果

String='4 Person'

答案 2 :(得分:-1)

这是一个有效的例子:

来自lxml import etree

class mySearch:
    def __init__(self, fileName):
        self.doc=etree.parse(fileName)
        self.text = self.doc.getroot().text
        self.values = dict()
        lines = self.text.split('\n')
        for line in lines:
            if line.strip() !='':
                entry = line.split('=')[0].strip()
                value = line.split('=')[1].strip()
                self.values[entry] = value

    def search(self, textTerm):
        try:
            return self.values[textTerm]
        except:
            return 'not found'

k = mySearch('data.xml')
print(k.search('time'))

您可以将该脚本与名为data.xml的xml文件放在同一目录中,并且该xml的内容为:

<text name="preparation">
   portion= 4 Person 
   time = 20 Minutes
   difficulty = medium
</text>