2017-02-06 2 views
0

Я пытаюсь извлечь значение из Cookie. cookie организованы с помощью пар [name] = [value], разделенных символом ';'. так что если у меня есть строка печенья, как так:Regex для получения значения из переменной String

username=user;password=pass;session="4341234556"; 

в этом примере, я хочу только значение «4341234556» без кавычек.

Значение переменной сеанса, разумеется, различно для каждого сделанного запроса. как я могу получить только значение сеанса с регулярным выражением (без кавычек)? имейте в виду, что порядок переменных не гарантируется одинаковым при каждом его возврате.

также, я хотел бы игнорировать любые пробельные символы, не содержащиеся в значении.

+2

Какой язык программирования? что ты уже испробовал? –

+0

Гарантировано, что все эти пары ключевых значений существуют? Все ли они в одной строке? Является ли значение, которое вы хотите получить всегда заключенным в двойные кавычки, или оно может быть заключено в одинарные кавычки? –

+0

@GeorgeTs единственная пара K = V, гарантированная существование, - это session = "stuff". да, все они получены по одной строке, но это тоже не гарантировано. – moonlightcheese

ответ

2

с регулярным "потребляющих" модель (требует группового доступа матч)

session="([^"]+)" //sessionid is in $1

demo

с просмотром назад (весь матч является SessionID, не ровня групп требуется):

(?<=session=")[^"]+

demo

+1

это отлично работало (второе решение). однако есть ли способ написать это так, чтобы он возвращал одно и то же значение, даже если кавычки не существуют? [edit: nevermind, я понял, что один из них. Большое спасибо!] – moonlightcheese

+1

Если только номер, вы можете заменить [^ "] + на \ d + –

+1

" (? <= session =) "? ([^"] +) "(удалить кавычки) с необязательными кавычками. –

Смежные вопросы