您好,我是regex的新用户; 我想从这里的复杂代码中仅获取8位字符;
["AA","BB","CC","DD","EE","FF","GG","AAA","SSS","sDDD","mFFFa"],"gaa":"aaa","timasa});
**var csrf_token = '551a8513';**
Unimportanttext = '/justanothernonimportanttext&&h=551a8513';
我尝试了token\s=\s'[^']*
,但结果为:["token = '551a8513"]
我只需要551a8513
这部分。您能帮我提供正则表达式代码吗?谢谢
英语水平低,可能是我有错误。对不起
编辑: 我们在这里得到2个答案,并且两个都可以! 1)
token = re.findall("(?<=csrf_token = ')[^\']+",driver.page_source)
print(link + str(token[0]))
2)
token = re.findall("csrf_token = '(.+)'", driver.page_source)
print(link + str(token[0]))
谢谢你们!希望你过得好! :)
答案 0 :(得分:1)
尝试以下积极的后向模式:
(?<=csrf_token = ')[^\']+
这将返回在“ csrf_token =”之后用单引号引起来的所有内容(“值”)。基本上,它将与您获得的内容匹配,但仅返回您关心的字符串部分。希望这会有所帮助。
答案 1 :(得分:1)
我们所需的输出包含数字,后跟小写字母和数字。我们可以使用类似于以下内容的表达式来捕获它:
([0-9]+[a-z]+[0-9]+)
或者我们可以使用
捕获它(([a-z]+)?([0-9]+))
或者我们可以简单地在前后使用'
:
'(.+)'
我们还可以添加更多边界。如:
csrf_token = '(.+)'
根据The fourth bird的建议,将其修改为:
csrf_token = '(.+?)'
# -*- coding: UTF-8 -*-
import re
string = """
["AA","BB","CC","DD","EE","FF","GG","AAA","SSS","sDDD","mFFFa"],"gaa":"aaa","timasa});
**var csrf_token = '551a8513';**
Unimportanttext = '/justanothernonimportanttext&&h=551a8513';
"""
expression = r'csrf_token = \'(.+?)\''
match = re.search(expression, string)
if match:
print("YAAAY! \"" + match.group(1) + "\" is a match ")
else:
print(' Sorry! No matches!')
YAAAY! "551a8513" is a match