如何在 python 中使用正则表达式区分列表模式
How to distinguish list pattern using a regex in python
我试图在不使用 python 包的情况下将 XML 转换为 JSON。为此,我将 XML 转换为一个列表,该列表最终将转换为嵌套字典,然后再转换为 JSON。从列表中读取 XML 时,我无法区分以下元素:
<Description>TestData</Description>\n
Data</Description>\n
<Description>Test\n
我用来区分 1 和 3 的正则表达式是:
x = re.compile("<Description>(.+?)<\/Description>\n")
x = re.compile("^((?!Description).)*<\/Description>\n")
我发现很难为第三个开发正则表达式。
x = re.compile("\s*<Description>(.+)(?!((<\/Description>)))\n")
尽管第二个正则表达式正确识别了文本 3它也识别了文本 1。这应该只识别文本 3.
你们非常亲密。此正则表达式可满足您的需要:
re.compile("\s*<Description>(.+)(?<!<\/Description>)\n")
我刚刚在 ?和 !做出否定的后视断言。检查此以获取更多信息:https://docs.python.org/2/library/re.html
你想要这样的东西吗?
<Description>([^<]+)\n
python脚本是
ss=""" <Description>TestData</Description>\n
Data</Description>\n
<Description>Test\n"""
regx= re.compile("<Description>([^<]+)\n")
capture=regx.findall(ss)
print(capture)
输出是
['Test']
看来capture[0]
值就是你想要的..
我试图在不使用 python 包的情况下将 XML 转换为 JSON。为此,我将 XML 转换为一个列表,该列表最终将转换为嵌套字典,然后再转换为 JSON。从列表中读取 XML 时,我无法区分以下元素:
<Description>TestData</Description>\n
Data</Description>\n
<Description>Test\n
我用来区分 1 和 3 的正则表达式是:
x = re.compile("<Description>(.+?)<\/Description>\n")
x = re.compile("^((?!Description).)*<\/Description>\n")
我发现很难为第三个开发正则表达式。
x = re.compile("\s*<Description>(.+)(?!((<\/Description>)))\n")
尽管第二个正则表达式正确识别了文本 3它也识别了文本 1。这应该只识别文本 3.
你们非常亲密。此正则表达式可满足您的需要:
re.compile("\s*<Description>(.+)(?<!<\/Description>)\n")
我刚刚在 ?和 !做出否定的后视断言。检查此以获取更多信息:https://docs.python.org/2/library/re.html
你想要这样的东西吗?
<Description>([^<]+)\n
python脚本是
ss=""" <Description>TestData</Description>\n
Data</Description>\n
<Description>Test\n"""
regx= re.compile("<Description>([^<]+)\n")
capture=regx.findall(ss)
print(capture)
输出是
['Test']
看来capture[0]
值就是你想要的..