使用Regex查找模式之后的所有内容,但不包括variab

2024-05-19 14:42:34 发布

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

我使用以下代码尝试搜索数据bhc=后面的文本

但我也要排除变量新政来自数据银行控股公司。在这种情况下,new\u deal变量可以是如下文本:“交易:statler-grill-4““

当我不想排除变量时,这个正则表达式就起作用了。你知道吗

例如:

'<figure class=\"deal-card deal-list-tile deal-tile deal-tile-standard\" data-bhc="(.+?)"'

但是当我是的时候,我的语法强制我的搜索返回none。什么是愚蠢的错误?你知道吗

regex = "<figure class=\"deal-card deal-list-tile deal-tile deal-tile-standard\" data-bhc=" + "^(?!" + re.escape(new_deal) + ").*"

pattern = re.compile(regex) 

info = re.search(pattern,htmltext)
print info.groups()

Tags: 数据文本renewdatacardstandardlist
2条回答

我认为您的问题可能与您如何使用单引号'和双引号"有关。如果您知道htmltext中的所有引号都是双引号,请将regex定义为单引号中的字符串。你知道吗

这可能适合您:

regex = '<figure class="deal-card deal-list-tile deal-tile deal-tile-standard" data-bhc="(?!'+ new_deal + ').*"'

您的正则表达式在转义new_deal的前面包含一个^。这将强制regex查找起始为new_deal的行。你知道吗

尝试:

"data-bhc=(?! *" + re.escape(new_deal) + ").*";

除非bhc数据在你搜索的文本中大量出现,否则你可能会把上面的内容变成整个regex。否则,就把它换成new_dealescape lookahead。你知道吗

编辑:我还在你的负面展望前面加了一个空格。这将阻止new_deal,即使前面有一个(或几个)空格。你知道吗

相关问题 更多 >