仅使用正则表达式提取json值

发布于 2021-01-29 17:26:00

我有一个嵌入在json中的描述字段,并且无法使用json库解析此数据。

{0,23}为了顺序尝试提取字符串的前23个字符,如何提取与说明相关的整个值?

   import re

    description = "'\description\" : \"this is a tesdt \n another test\" "

    re.findall(r'description(?:\w+){0,23}', description, re.IGNORECASE)

对于上述代码,仅['description']显示

关注者
0
被浏览
149
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以尝试以下代码:

    import re
    
    description = "description\" : \"this is a tesdt \n another test\" "
    
    result = re.findall(r'(?<=description")(?:\s*\:\s*)(".{0,23}?(?=")")', description, re.IGNORECASE+re.DOTALL)[0]
    
    print(result)
    

    得到的结果如下:

    "this is a tesdt 
     another test"
    

    本质上是:

    \"this is a tesdt \n another test\"
    

    这就是您在评论中要求的。


    说明-

    (?<=description")表示正则表达式后面是正向表达式,表示正则表达式与前面的文本匹配。description"
    (?:\s*\:\s*)是一个非捕获组,表示正则表达式description"后面将是零个或多个空格,冒号(:)和零个或多个空格。
    (".{0,23}?(?=")")是所需的实际匹配项,由双引号("),零至二十三个字符和最后的双引号(")组成。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看