2010-09-09 3 views
0

Я пытаюсь выяснить, регулярное выражение для следующих функций:Regex HTML-теги

String</td><td>[number 0-100]%</td><td>[number 0-100]%</td><td>String</td><td>String</td> 

Кроме того, некоторые из этих TD теги могут иметь атрибуты стиля в какой-то момент. Я попытался это:

String<.*> 

и вернулся

String</td> 

, но при попытке

String<.*><.*> 

не дал ничего. Почему это?

+0

какой язык вы используете для регулярного выражения? Ява? – sheeks06

+0

PHP, но это не имеет значения, не так ли? – codersarepeople

+0

Это так, потому что некоторые языки программирования используют разные синтаксисы регулярных выражений. – BoltClock

ответ

1
(.+)</td><td>(1?\d?\d)%</td><td>(1?\d?\d)%</td><td>(.+)</td><td>(.+)</td> 
+0

Это хорошо, но теги не всегда будут , иногда они будут иметь атрибуты и говорят – codersarepeople

1

использование Character класс, как <td[^>]*> если <td> or <td class="abc">

2

Вы, вероятно, не следует пытаться использовать регулярные выражения для разбора HTML, потому что таким образом lies madness.

+0

Хорошая статья :) – Zafer

1

Попробуйте следующее:

(.+)(<[^>]+>){2}(1?\d?\d)%(<[^>]+>){2}(1?\d?\d)%(<[^>]+>){2}(.+)(<[^>]+>){2}(.+)<[^>]+> 

Вы можете проверить его here.

EDIT: Хотя это будет работать большую часть времени, если в одном атрибуте тега есть символ>, это регулярное выражение не будет работать.

+0

'>' разрешено в значении атрибута. – Gumbo

+0

Я писал это как редактирование :). – Zafer

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