Google Spreadsheets Regex Case нечувствителен (Regexreplace)
Я пытаюсь создать не зависящий от регистра запрос регулярных выражений в Google Spreadsheets с функцией regexreplace. Это возможно? Я пробовал флаг \i и получил ошибку #REF, заявив, что выражение недействительно: = regexreplace ( "Test", "t\i", ") дает ошибку, когда я надеюсь получить" es" в качестве конечный результат.
Возможно ли это? Есть ли флаг чувствительности к регистру в таблицах Google?
Спасибо заранее!
Ответы
Ответ 1
AFAIK, единственный способ включить нечувствительность к регистру - JavaScript API в документах google.
По-видимому, синтаксис RE2 поддерживает встроенный модификатор inline (?i)
, нечувствительный к регистру:
=REGEXREPLACE("Test", "(?i)t", "")
Альтернативой, которая будет работать, является использование класса Character, добавляя оба случая буквы T
..
=REGEXREPLACE("Test", "[Tt]", "")
Ответ 2
Я нашел это:
=REGEXREPLACE("Test","(?i)t","")
Он возвращает то, что вы хотите
es
google/re2
Ответ 3
Как писал Александр Иванов,
Да, я понимаю, что эта тема решена. Но я нашел что-то фантастическое!
= REGEXREPLACE ( "Тест", "(? i) t", "") Он возвращает то, что вы хотите
es
P.S.: Пожалуйста, если кто-то знает, почему он работает, тогда комментируйте.
Google использует свой собственный механизм регулярных выражений re2.
Использование (? I) позволяет вам устанавливать флаги для поиска без учета регистра
https://re2.googlecode.com/hg/doc/syntax.html
Ответ 4
Существует флаг NO для чувствительности к регистру
Если у вас более длинная строка, и вы хотите сделать ее нечувствительной к регистру, вам холодно попробуйте использовать строчное регулярное выражение и сделать свой тестовый нижний регистр функцией ниже: = REGEXREPLACE (LOWER (строка), regex_in_lowercase, замена)
в вашем конкретном случае: = REGEXREPLACE (LOWER ( "тест" ), "t", "")
Проблема в том, что выражение захвата должно быть в нижнем регистре!
источник: https://productforums.google.com/forum/#!topic/docs/7kNb9LGeIfM