查找字符串,提取值[重复]

Posted

技术标签:

【中文标题】查找字符串,提取值[重复]【英文标题】:Find string, extract value [duplicate] 【发布时间】:2019-12-24 01:14:18 【问题描述】:

我正在尝试解析 Python 中包含内联脚本的 html。我需要在脚本中找到一个字符串,然后提取该值。在过去的几个小时里,我一直在尝试在regex 中执行此操作,但我仍然不相信这是正确的方法。

这是一个示例:

['key_to_search_for']['post_date'] = '10 days ago';

我要提取的结果是:10 days ago

这个正则表达式让我了解了一部分,但我无法弄清楚完整的匹配:

^\[\'key_to_search_for\'\]\[\'post_date\'\] = '(\d1,2)+( \w)

Regex playground

但是,即使我可以匹配regex,我也不确定仅获得价值的最佳方式。我正在考虑用空格替换键,例如 .replace('['key_to_search_for']['post_date'] = '',''),但这似乎效率低下。

我应该匹配regex 然后替换吗?有没有更好的方法来处理这个?

【问题讨论】:

用正则表达式解析 html 是错误的,但显示更多上下文,显示 html 上下文 - 因为现在它似乎只是一个常规字符串,可能是“正则表达式” 您可以使用单个捕获组提取值^\['key_to_search_for'\]\['post_date'\] = '(\d1,2 \w+ \w+)';$ 参见regex101.com/r/ee60zU/1 @RomanPerekhrest 我正在使用漂亮的汤来解析 HTML,但漂亮的汤不处理内联脚本。 ***.com/questions/38547569/… 【参考方案1】:

您可以使用单个捕获组提取值,并使用\w+ 的量词匹配这两个词。

该值在捕获组 1 中。

^\['key_to_search_for'\]\['post_date'\] = '(\d1,2 \w+ \w+)';$

Regex demo

或使用与除' 之外的任何字符匹配的否定字符类

^\['key_to_search_for'\]\['post_date'\] = '([^']+)';$

Regex demo

【讨论】:

以上是关于查找字符串,提取值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

华为python机试题目:整数与IP地址间的转换图片整理字串的连接最长路径查找提取不重复的整数字符串合并处理字符串最后一个单词的长度删除字符串中出现次数最少的字符

如何从javascript中的rgb字符串中提取颜色值[重复]

在postgresql中将值提取到逗号分隔的字符串中[重复]

excel表格怎么提取单元格中的部分内容

如果数组值包含字符串,则从 List<string> 中查找值 [重复]

Python Regex - 在html标签之间查找字符串[重复]