繁体   English   中英

XPath正则表达式通过文本

[英]XPath regular expression through text

我在通过文本使用正则表达式时遇到了一个小问题。

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

resipes.xml

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

我想要的是在文本中搜索“部分”,然后仅查看“ 4 Person”

我将非常感谢您的帮助

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

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

观看有效的演示

说明:

.+匹配任何字符,

portion部分字符串匹配,

\\s*=\\s*与等号匹配,包括前面和后面的空格字符(如果有),

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

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

结果

String='4 Person'

这是一个工作示例:

从lxml导入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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM