LINUX.ORG.RU

Как сделать регулярное выражение регистро-независимым?

 ,


1

2

В конфиге Metricbeat есть список регулярных выражений (по правилам Lucene), по которым фильтруются добавляемые в поисковик данные. В моём случае это — просто список слов в ASCII. Требуется, чтобы эти слова искались вне зависимости от регистра.

Пока обрабатываю файл-список командой

sed 's/[Aa]/[Aa]/g; s/[Bb]/[Bb]/g; s/[Cc]/[Cc]/g; s/[Dd]/[Dd]/g; s/[Ee]/[Ee]/g; s/[Ff]/[Ff]/g; s/[Gg]/[Gg]/g; s/[Hh]/[Hh]/g; s/[Ii]/[Ii]/g; s/[Jj]/[Jj]/g; s/[Kk]/[Kk]/g; s/[Ll]/[Ll]/g; s/[Mm]/[Mm]/g; s/[Nn]/[Nn]/g; s/[Oo]/[Oo]/g; s/[Pp]/[Pp]/g; s/[Qq]/[Qq]/g; s/[Rr]/[Rr]/g; s/[Ss]/[Ss]/g; s/[Tt]/[Tt]/g; s/[Uu]/[Uu]/g; s/[Vv]/[Vv]/g; s/[Ww]/[Ww]/g; s/[Xx]/[Xx]/g; s/[Yy]/[Yy]/g; s/[Zz]/[Zz]/g'
и вставляю в конфиг. Некрасиво. Громоздко. Можно улучшить?

------------------------------------------------------------

Ответ:

Команду для sed можно записать короче:

sed 's/\([A-Za-z]\)/[\u\1\l\1]/g'

А в самом списке вместо имён можно поставить

'(?i:firefox)'

★★★

Последнее исправление: olegd (всего исправлений: 2)

Ответ на: комментарий от RazrFalcon

Или я не понял задачу?

Есть слово «file», по которому должны найтись «FILE» и «File». Однострочник на sed превращает его в "[Ff][Ii][Ll][Ee]", что даёт нужный результат, но неудобочитаемо. Лучше сделать можно?

olegd ★★★
() автор топика

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

Приводи перед седом все к одному регистру.

Deleted
()

Про руссиш не знаю, но вот тебе одно выражение для латиницы:

sed 's/\([A-Za-z]\)/[\1\u\1]/g'

anonymous
()
Ответ на: комментарий от unanimous

Ключ 'I'

Регулятрое выражение не в sed, а в конфиге программы, которая работает по немного другим правилам.

olegd ★★★
() автор топика
Ответ на: комментарий от anonymous

sed 's/\([A-Za-z]\)/[\l\1\u\1]/g'

Спасибо.

olegd ★★★
() автор топика
Ответ на: комментарий от Deleted

Приводи перед седом все к одному регистру.

Регэкспы обрабатывает не sed, а Metricbeat. Если там есть возможность так обрабатывать отправляемую информацию, я её ещё не нашёл.

olegd ★★★
() автор топика
Ответ на: комментарий от urxvt

Спасибо, это самое удобное решение.

olegd ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.