Удалите все запятые в тегах ‹title›

Последний человек в моем положении был счастлив с запятой в тегах title. Мне нужно удалить все запятые в тегах заголовков 40 000 html-страниц продукта. Есть ли выражение регулярного выражения для поиска всех запятых в теге заголовка? Я надеюсь, что смогу найти все запятые с выражением регулярного выражения и заменить их в Dreamweaver. Это возможно?

Формат обычно следует

(открывающий тег заголовка)Product, Product, 81120,
(открывающий тег title)Product Product, Product, 98564,
(открывающий тег title)Product Product, Product Product, 98564,
(открывающий тег title) Продукт, Продукт Продукт, 98564,

номер в конце - это 5-значный продукт #

Любая помощь будет принята с благодарностью


person user2005514    schedule 23.01.2013    source источник
comment
пожалуйста, дайте нам точный формат, это все между ‹название›‹/название›? Вам придется быть немного более конкретным   -  person Destrictor    schedule 24.01.2013
comment
Неужели нет закрывающего тега title?   -  person John Dvorak    schedule 24.01.2013
comment
‹заголовок›Word, Word, 81120, Word Word Word Word‹/заголовок›   -  person user2005514    schedule 24.01.2013
comment
Это все между тегами ‹title›‹/title›   -  person user2005514    schedule 24.01.2013
comment
извините, я не был более конкретным   -  person user2005514    schedule 24.01.2013


Ответы (3)


Вы можете найти запятую, после которой </title> — это то, что следует за первым < после запятой, и заменить их пустой строкой:

,(?=[^<]*</title>)

Обратите внимание, что это предполагает, что вы будете делать это в редакторе. Никогда не доверяйте регулярным выражениям, когда речь идет о неизвестном HTML. Если вы будете использовать это в коде, лучше использовать анализатор DOM, чтобы правильно определить область замены. Также предполагается, что либо строка </title> не будет отображаться вне контекста (например, в коде javascript), либо вы можете просмотреть процесс замены вручную, если это регулярное выражение может запутаться. (чья идея снова заключалась в том, чтобы иметь 40 тысяч HTML-файлов? Надеюсь, они не создают новые теги заголовков!).

person John Dvorak    schedule 23.01.2013

Хороший блог, описывающий, как это сделать на PHP: http://www.thatsquality.com/articles/how-to-match-and-replace-content-between-two-html-tags-using-regular.-expressions

Я думаю, что для этого в dreamweaver вам понадобится что-то, использующее обратную ссылку, например:

(<Title>\S\s),+(\S\s<\/Title>)

С этим в замене: $1 $2

Как указывалось - для успеха нужно зациклить это - думал, что это будет поддерживаться IDE, но, вероятно, это не так.

Хороший пост здесь: http://somerandomdude.com/2006/05/25/dreamweaver-regular-expressions/

person Matthew    schedule 23.01.2013
comment
Вам нужно будет запустить это регулярное выражение несколько раз, чтобы избавиться от всех запятых. - person John Dvorak; 24.01.2013
comment
Предупреждение: не знаком с Dreamweaver и адаптирован. - person Matthew; 24.01.2013
comment
Зачем ставить \ перед, в []? Только группы (\s для пробелов, \S для не пробелов) требуют экранирования. - person Destrictor; 24.01.2013
comment
@Destrictor закрывающие фигурные скобки и обратную косую черту тоже нужно экранировать, даже в классах символов - person John Dvorak; 24.01.2013
comment
@Destrictor модифицировал предыдущий ответ, не подумав. - person Matthew; 24.01.2013
comment
@JanDvorak Итак, не будет ли добавление регулярного выражения в dreamweaver и нажатие «Заменить все» (если это вариант) не запускать регулярное выражение до тех пор, пока оно не выйдет из строя? - person Matthew; 24.01.2013
comment
@Matthew Я предполагаю, что это не заменяет перекрывающиеся совпадения или рекурсивно. В противном случае это может привести к бесконечным циклам. - person John Dvorak; 24.01.2013
comment
Еще два обновления: почему запятая заключена в класс символов и почему она заключена в группу захвата? - person John Dvorak; 24.01.2013
comment
@JanDvorak Оба улучшились - и проголосовали за ваш ответ как за лучший :) - person Matthew; 24.01.2013

Вы можете использовать это регулярное выражение: ([\,]+)

person Alexandru Calin    schedule 23.01.2013
comment
Это удалит все запятые, а не только в названии. - person John Dvorak; 24.01.2013
comment
Меня интересует регулярное выражение. Вы все еще обновляете его? - person John Dvorak; 24.01.2013