0
Есть ли возможное решение этой проблемы?Теги Regex Игнорировать все теги td внутри тега tr
Я хочу регулярное выражение, которое игнорирует все теги td в тегах tr. Теги tr, которые я ищу, неверны, поскольку в конце тега отсутствует "/". До сих пор у меня есть:
<tr[^>]*><td(?:(?!</td>).)*</td><tr[^>]*>
<tr[^>]*> This needs to be the beginning of the expression ****
<td(?:(?!</td>).)*</td> This will find everything between <td> and </td>
<tr[^>]*> This needs to be the end of the expression ****
Это регулярное выражение не работает, конечно. Вот пример текста, чтобы запустить регулярное выражение:
Образец 1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
</title>
</head>
<body>
<table asdf>
<tr asdf>
<td asdf>
<table asdf>
<tr asdf: asdf>
<td>
blah blah blah
</td>
</tr>
</table>
</td>
<td>
Keep going
</td>
<tr> If highlighted to here from first tr tag than correct regex was used
</table>
</body>
</html>
Образец 2:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
</title>
</head>
<body>
<table asdf>
<tr asdf>
<td asdf>
<table asdf>
<tr asdf: asdf>
<td>
blah blah blah
</td>
</tr>
</table>
</td>
<td>
<table asdf>
<tr asdf: asdf>
<td>
blah blah blah
</td>
</tr>
</table>
</td>
<tr> If highlighted to here from first tr tag than correct regex was used
</table>
</body>
</html>
Пример 3:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
</title>
</head>
<body>
<table asdf>
<tr asdf>
<td asdf>
<table asdf>
<tr asdf: asdf>
<td>
blah blah blah
</td>
</tr>
</table>
</td>
<td>
<table>
<tr>
<td>
blah blah blah
</td>
</tr>
</table>
</td>
<tr> If highlighted to here from first tr tag than correct regex was used
</table>
</body>
</html>
Пример 4:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
</title>
</head>
<body>
<table>
<tr>
<td> </td>
</tr>
</table>
<br/>
<br/>
<br/>
<table class="afdadsf">
<td></td>
</table>
<br/>
<br/>
<table class="fdafdas">
<tr><td></td>
</tr>
</table>
</body>
</html>
Мой желаемый результат - это когда выполняется регулярное выражение, первый тэг до последнего тэга тега подсвечивается с использованием обоих примеров текста выше. Предположим, что другие образцы текстов, где тег td может содержать любое значение.
Вы хотите игнорировать все ''
Не думаю, что недостаток является проблемой. Мне нужно иметь
ответ
основан на том, что был опубликован и просил, если ваш Regex двигатель поддерживает рекурсию
(?R)
использовать этот шаблон:может потребоваться обширное исследование
Demo
на основе комментариев ниже
<tr>
теги всегда самые внешние, используйте этот шаблонs
опция включена:Demo
источник
2014-10-23 03:03:46
Что вы имеете в виду, пропустив, обновите свой вопрос и опубликуете ожидаемый результат. в этом обновленном примере совпадение # 1 - это то, что вы просили выделить http://regex101.com/r/yW4aZ3/95 –
Я отредактировал свой вопрос, и вот мои проблемы с вашим ответом: 1. Я использовал это регулярное выражение в все мои файлы, и если выражение не существует, оно выделяет все в файле. У меня есть тысячи файлов. 2. Ваше регулярное выражение работает только для одного образца текста. – developer234
Вопрос, есть ли шанс, что после последнего «неправильного» '
Смежные вопросы