RegEx для сопоставления специального алфавитно-цифрового шаблона - PullRequest
1 голос
/ 20 мая 2019

Здравствуйте, я новичок в регулярных выражениях;Я хочу получить только 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]))

Спасибо вам обоим!Я надеюсь, что вы живете хорошо!:)

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Наш желаемый вывод состоит из цифр, за которыми следуют строчные буквы и цифры.Мы можем зафиксировать это, используя выражение, подобное:

([0-9]+[a-z]+[0-9]+)

Демо

Или мы можем захватить его, используя:

(([a-z]+)?([0-9]+))

Демо

Или мы можем просто использовать ' до и после:

'(.+)'

Демо

Мы также можем добавитьбольше границ.Например:

csrf_token = '(.+)'

Демо

Основано на рекомендациях Четвертая птица , гораздо безопаснее и лучше изменить его как:

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 ???
1 голос
/ 20 мая 2019

Попробуйте эту позитивную картину:

(?<=csrf_token = ')[^\']+

Это вернет все, что заключено в одинарные кавычки ('value') после "csrf_token =". По сути, он будет соответствовать тому, что вы получили, но вернет только ту часть строки, которая вам небезразлична. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...