2010-12-20 2 views
0

текста из потока:Regex для извлечения атрибута из элемента HTML

<option value=\"1999\">1999</option>\r\n \r\n \r\n\r\n \r\n\r\ 
    n  
<option value=\"2000\">2000</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2001\">2001</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2002\">2002</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2003\">2003</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2004\">2004</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2005\">2005</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2006\">2006</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2007\">2007</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2008\">2008</option>\r\n \r\n \r\n\r\n \r\n\r\n  
<option value=\"2009\">2009</option> 

Regex: (?si:<option value=\\\"(?<year>.*?)\\) не это должен быть правильный путь, чтобы получить год ?. значение для года группы, получить все символы до тех пор, пока вы не попали \

+0

Что регулярное выражение язык вы используете? – JaredPar

+0

На каком языке вы это делаете? – marcog

+1

Вообще говоря, использование регулярных выражений на нерегулярном языке, таком как HTML, не является хорошим хорошим выбором. Потому что, хотя в HTML есть части, которые являются регулярными и современными реализациями регулярных выражений, поддерживают нерегулярные функции, разбор HTML с регулярными выражениями затруднен и подвержен ошибкам. Вы должны лучше использовать правильный парсер HTML, если язык, который вы используете, обеспечивает его. – Gumbo

ответ

0

попробовать

\<option\svalue\=\\\"(\d*)\\\" 

Это равнина регулярное выражение. измените его на какой язык вы его используете

0

Это зависит от того, какой язык вы используете, но попробуйте <option\s+value=(\\\")?(\d+)(\\\")?>.

Вот она работает в Python:

>>> re.findall("<option\s+value=(\\\")?(\d+)(\\\")?>", text) 
['1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009'] 
Смежные вопросы