【问题标题】:Regex for js variable end with semicolonjs变量的正则表达式以分号结尾
【发布时间】:2020-03-28 13:51:41
【问题描述】:

我正在尝试从使用 BeautifulSoup 提取的 Javascript 代码中查找并提取 product_image 对象的属性分配。我试过关注

re.findall(r"product_images\['top_lg'] = .*;", txt)  

不幸的是,它没有从我下面的文本中提取任何内容。

 product_images['top_lg'] = {
                "tn": '//image.test.com/media/cache/04/0a/040a1e61f5edc387d8c8e40d3ea0e0ca.jpg',
                "md": '//image.test.com/media/cache/b7/f3/b7f3cb1da267d7e8ac0412bdc522c862.jpg',
                "lg": '//image.test.com/media/shape_images/011f7f24ae4cbbef191cff1a711df9e1_a3c9ca71b7d85d87085955f8d1c4bfc3_0_.jpg',
                "alt": 'test ',
                "data-zoomable": 'True',
                "text_line": 'teest'
            };

我正在解析的脚本取自https://www.brilliantearth.com/Petite-Twisted-Vine-Diamond-Ring-White-Gold-BE1D54-3821855/

【问题讨论】:

  • 只是建议如何使用正则表达式获取整个变量

标签: javascript python regex beautifulsoup regex-group


【解决方案1】:

如果您像我一样发现正则表达式标志令人困惑且难以记住,请使用 “不是分号”表达式而不是点

re.findall(r"product_images\['top_lg'] = [^;]*;", txt)

注意。否则,您可以按照 Thierry 的建议添加一个标志,但您还需要在 * 之后添加一个“非灰色修饰符”?,以表明您对第一个分号而不是最后一个分号感兴趣。

【讨论】:

  • 这不是 MULTILINE 的用途,请查看 its documentation。这里的问题是.* 中的. 不会匹配换行符。选项是re.S/re.DOTALL,请参阅我的答案以获取工作示例。
  • 谢谢,已解决,但为什么我没有看到您的答案?您是否出于某种原因撤回了它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多