如何使用regex提取引号中的值?

2024-10-02 08:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的短信是

my_text = """ ["supra","value":"ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A=="}};</script> """

我想提取

ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A==

我试过了

extract_posted_data = re.search(r'(\"value\": \")(\w*)', my_text)
print (extract_posted_data.group(2))

这就是我收到的

ddad7f1eada3c52c66cmh6ZG8tf

它不是提取完整的值

谢谢


Tags: textredatavaluemyscriptextract短信
2条回答

您要查找的正则表达式是r"\"value\":\"(\S+)\"",您所需的字符串可以在匹配的group(1)中找到

这里有一个到regex的实时链接,其中包含要测试的测试字符串。Regex101还有代码生成器,可以用来生成所需的python代码和测试

https://regex101.com/r/p2N524/1


import re

regex = r"\"value\":\"(\S+)\""

test_str = "[\"supra\",\"value\":\"ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A==\"}};</script> "

matches = re.finditer(regex, test_str, re.MULTILINE)

for matchNum, match in enumerate(matches):
    matchNum = matchNum + 1

    print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1

        print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))

结果

Match 1 was found at 9-123: "value":"ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A=="

Group 1 found at 18-122: ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A==

-不包括在\w(也不包括=
您需要使用:[\w=-]*而不是\w*

相关问题 更多 >

    热门问题