2015-07-24 2 views
0

У меня есть URL-адрес, как показано ниже, и хотел бы использовать регулярное выражение для извлечения сегментов, таких как: Id:Reference, Title:dfgdfg, Status.Title:Current Status, CreationDate:Logged ...Шаблон для соответствия [символов]: [символов] внутри URL

Это самый близкий образец я получил [=,][^,]*:[^,]*[,&], но, очевидно, результат не так, как ожидалось, какие-нибудь лучшие идеи?

P.S. Я использую [^,] для маскировки любых символов, кроме ,, потому что , не будет существовать сегмент.

Это сайт, используемый для соответствия шаблону регулярного выражения. http://regexpal.com/

URL-адрес: http://localhost/site/=powerManagement.power&query=_Allpowers&attributes=Id:Reference,Title:dfgdfg,Status.Title:Current Status,CreationDate:Logged,RaiseUser.Title:标题,_MinutesToBreach&sort_by=CreationDate"

Спасибо,

ответ

2

Вы не указали, какой язык программирования вы используете. Но почти все с поддержкой этого:

([\p{L}\.]+):([\p{L}\.]+) 

\p{L} соответствует символ Unicode на любом языке, при условии, что ваш регулярных выражений поддержки двигателя Unicode. RegEx 101.

Вы можете извлечь матчи с помощью групп захвата, если хотите.

+0

Вы прибил его. Но вы можете включить классы символов, которые только что поддерживаются языком, который использует OP, например '([[: alpha:] \.] +): ([[: Alpha:] \.] +)'. – alvits

+1

@alvits благодарит за предложение. '[: alpha:]' не отображает китайские (??) символы, используемые OP, поэтому я использовал '\ p {L}' для Unicode. –

+0

Ваш ответ был обновлен, когда я собирался спросить о части Unicode. Он работает, спасибо! – Lys

-1

В питона:

import re 
matchobj = re.match("^.*Id:(.*?),Title:(.*?),.*$", url,) 
Id = matchobj.group(1) 
Title = matchobj.group(2) 
Смежные вопросы