cdzjf 发表于 2024-5-10 22:50:27

正则遇到这样的问题怎么处理呢

aa='class="javascript:void(0)" class="info-prev" class="display:none;'

re.findall('class=([\w\W]*?)class=', aa)

我假设这个,我需要取"javascript:void(0)" class="info-prev" 这一段的内容,但是如果用正则,出来的结果会是"javascript:void(0)"

我想知道怎么才可以匹配关键字是第2个或者第n个呢?

FishC 发表于 2024-5-10 22:50:54

你可以使用正则表达式中的分组来匹配第2个或者第n个关键字。具体方法是,在你想要匹配的关键字前面添加一个分组,并使用圆括号将其包裹起来。

例如,你想要匹配第2个关键字,你可以这样修改你的正则表达式:

import re

aa = 'class="javascript:void(0)" class="info-prev" class="display:none;'

result = re.findall('class=(.*?)class=', aa)
second_keyword = result
print(second_keyword)

输出结果为:"info-prev"

同样的道理,如果你想要匹配第n个关键字,你可以使用`result`来获取对应位置的匹配结果。

需要注意的是,这种方法只适用于你确定匹配的关键字在字符串中存在并且顺序固定的情况。如果关键字的顺序是随机的,则不能使用这种方法。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

isdkz 发表于 2024-5-10 22:59:31

aa='class="javascript:void(0)" class="info-prev" class="display:none;"'
result = re.findall('class="(.*?)"', aa)

print(result)                      # 匹配到的第一个
print(result)                      # 匹配到的第二个
print(result)                      # 匹配到的第三个
页: [1]
查看完整版本: 正则遇到这样的问题怎么处理呢