Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите укртотить монстра (сократить регулярку) (https://javascript.ru/forum/misc/29034-pomogite-ukrtotit-monstra-sokratit-regulyarku.html)

oneguy 13.06.2012 21:01

Нет, извините, \b обозначает границу только слов, написанных латинскими буквами, цифрами и знаком "_", поэтому мой последний вариант не подходит.

oneguy 13.06.2012 21:13

Есть такое решение: использовать обычную регулярку
/ТОВ|ООО|ДП|НПКП|ЗАО|ОАО|ЧП|СПД|ЧП|ФОП|ФЛП|ФЛ|НПП|МП|фирма|компания|частное предприятие|предприятие|ч\/п|OOO|интернет\-магазин|интернет|магазин|TM/g
, и использовать метод replace, где 2-ой параметр - функция, которая проверяет, нет ли непосредственно перед или после найденной строки буквы.

oneguy 13.06.2012 21:18

Deff привёл неправильное решение, так как, кроме мелких ошибок, окажутся съеденными пробелы, точки или запятые перед или после ключевых слов.

oneguy 13.06.2012 21:33

Ещё есть такое решение:
str.replace(/(^|[^a-zа-яіґїєё])(?:ТОВ|ООО|ДП|НПКП|ЗАО|ОАО|ЧП|СПД|ЧП|ФОП|ФЛП|ФЛ|НПП|МП|фирма|компания|частное предприятие|предприятие|ч\/п|OOO|интернет\-магазин|интернет|магазин|TM)(?![a-zа-яіґїєё])/g, "$1")

где str - исходная строка.

oneguy 13.06.2012 21:54

Если список ключевых слов нужно будет редактировать только вручную, то я советую использовать регулярный литерал, если список должен составляться Javascript'ом, то использовать RegExp(str)

Deff 14.06.2012 00:16

Цитата:

Сообщение от oneguy
Deff привёл неправильное решение,

:yes: Никто не мешает в подстановке вставлять взад пробел, (который никому не помешает) - у мну большой опыт на майл ру парсинг-цензуры в чате (не жаловались), И в моем варианте вставки замены в данном топе - не критично...

oneguy 14.06.2012 00:37

Цитата:

Сообщение от Deff (Сообщение 181275)
:yes: Никто не мешает в подстановке вставлять взад пробел, (который никому не помешает) - у мну большой опыт на майл ру парсинг-цензуры в чате (не жаловались), И в моем варианте вставки замены в данном топе - не критично...

Да нет, в вашем случае из "ля-ля-ля,ООО ля-ля" получится "ля-ля-ля ===== | CENSORED | ===== ля-ля", то есть запятая исчезнет.

Deff 14.06.2012 00:39

oneguy,
Гы, коли мы убираем слово - Запятая верно не критична :) ?

oneguy 14.06.2012 00:55

Ну, это зависит от поставленной задачи.

oneguy 14.06.2012 03:15

Цитата:

Сообщение от Deff
у мну большой опыт на майл ру парсинг-цензуры в чате (не жаловались),

Цензура чата реализована на клиенте? Если да, то можна посмотреть, а то я не знаю где чат в mail.ru?
Извините за офф-топ.


Часовой пояс GMT +3, время: 08:21.