Автозамена и регулярные выражения в Notepad++

BT
На сайте с 07.07.2010
Offline
37
3641

Господа, помогите, пожалуйста, весь вечер ломаю голову.

<td.*> заменить на <td> - отлично чистит код. Но как строку

<td width="568" colspan="2" style="width: 341pt; border-style: none solid; border-left-color: white; border-left-width: 1pt; border-right-color: white; border-right-width: 3pt; padding: 0cm 5.4pt; height: 32.2pt; background: rgb(247, 150, 70);">

заменить на

<td colspan="2">

И второй вопрос, как все <td> содержащие colspan="2"/colspan="3"/colspan="4" и весь мусор что выше, заменить на <td colspan="2"/colspan="3"/colspan="4">?

Буду премного благодарен за помощь.

Комплексное обслуживание сайтов (http://fl.ru/users/brick_top).
S7
На сайте с 15.08.2010
Offline
79
#1

Найти: (<td)[^>]+(colspan="\d+")[^>]*>

Заменить: \1 \2>

BT
На сайте с 07.07.2010
Offline
37
#2
senks777:
Найти: (<td)[^>]+(colspan="\d+")[^>]*>
Заменить: \1 \2>

Мне необходимо, чтобы условие само определило значение colspan. Также надо прикрутить rowspan. И так же там может не быть ни того не другого. Соответственно "на что меняем" после автозамены должны быть одним из:

- <td colspan="xx"> (именно с тем значение что было в этой стркое в исходнике)

- <td rowspan="xx">

- <td>

---------- Добавлено 09.07.2015 в 12:02 ----------

PS: http://joxi.ru/brR6yJwSbk59r1.png

Q
На сайте с 09.10.2011
Offline
71
#3

я тут не в тему, но нафига вам нотпад++ без подсветки синтаксиса?

sublime text попробуйте. регулярки там тоже есть.

BT
На сайте с 07.07.2010
Offline
37
#4
q3wzeck:
я тут не в тему, но нафига вам нотпад++ без подсветки синтаксиса?
sublime text попробуйте. регулярки там тоже есть.

Поставил его только ради автозамены, почистить код.

В общем работает <td.+?colspan="(\d+)"[^>]*> и меняем на <td colspan="$1">. В итоге получается то что требуется в первом посте.

Кто-нибудь подскажет, как прикрутить к этом условию поиск по rowspan и соотв. замену на <td rowspan="xx"> + третий случай, когда нет ни rowspan, ни colspan и заменить нужно просто на <td>?

S7
На сайте с 15.08.2010
Offline
79
#5

Brick_Top, :)

1) у вас Notepad++ ничего не нашел потому, что в окне "Replace" вкладка "Заменить",

слева внизу нужно выбрать - "регуляр. выражен" (вместо "расширенный")..

.. 😮 смотрите внимательно свой скрин и попробуйте снова ..

2) Notepad++ не поддерживает применение в своих регулярках поиск методами "или":

(colspan|rowspan)

(colspan)? (rowspan)?

(colspan|rowspan){0,1}

а также подобное (?<=colspan=\"|rowspan=\")(\d+)

поэтому, придется сделать минимум 2 действия

(которые можно записать в макрос и выполнять за раз)

Найти: <td[^>]+([cr]o[lw]span="\d+")[^>]*>

Заменить: <td \1>

и оставшиеся заменяем по общему признаку, к примеру style=

Найти: <td[^>]+style=[^>]+>

Заменить: <td>

такова особенность работы регулярок в Notepad++

предположил что вы знаете и не стал писать сразу 🙄

p.s. пользую Notepad++ v.5.9.8 (UNICODE), в разных версиях возможны различия работы regex

I
На сайте с 24.05.2015
Offline
17
#6
Brick_Top:
Поставил его только ради автозамены/QUOTE]
RegexBuddy
vandamme
На сайте с 30.11.2008
Offline
675
#7
q3wzeck:
я тут не в тему, но нафига вам нотпад++ без подсветки синтаксиса?

Там есть подсветка синтаксиса.

iroomer:
RegexBuddy

Или The Regex Coach, чуток проще интерфейс.

BT
На сайте с 07.07.2010
Offline
37
#8
senks777:

Найти: <td[^>]+([cr]o[lw]span="\d+")[^>]*>
Заменить: <td \1>

и оставшиеся заменяем по общему признаку, к примеру style=
Найти: <td[^>]+style=[^>]+>
Заменить: <td>

Вы не представляете от какой головной боли избавили ) Огромнейшее спасибо! 🍻 (не нашел смайла с рукопожатием)

S7
На сайте с 15.08.2010
Offline
79
#9

На здоровье! :) .. приятно читать и рад был помочь.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий