Как использовать интервальный квантификатор от 0 до определенного числа Регулярные выражения в Google Sheets? - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь решить эту проблему:

Как использовать интервальные квантификаторы фигурных скобок "{}" от 0 до 4 в формуле REGEXMATCH Google Sheets, чтобы сопоставлять только вхождения от zero до 4 вхождений и нет больше?

Здесь исходный текст и контекст, с которого я впервые начал (раздел Quantifiers — * + ? and {}) Учебное пособие по Regex - краткое руководство по примерам

Указание следующего:

a(bc){2,5}  matches a string that has a followed by 2 up to 5 copies of the sequence bc

Моя формула:

=REGEXMATCH($A7,"a(bc){0,4}")

Здесь 1-й input в A7:

abcbcbcbcbc

Вопреки ожиданиям, он возвращает TRUE несмотря на то, что A7 имеет более 4 bc в качестве ввода в A7.

То же, что противоречит ожидаемому результату, имеет место для следующих интервалов {1,4} и {2,4} in:

=REGEXMATCH($A7,"a(bc){1,4}")

=REGEXMATCH($A7,"a(bc){2,4}")

Он по-прежнему возвращает совпадения, несмотря на 5 появлений последовательностей bc в этих двух последних случаях.

Вот лист: интервал квантификатора в регулярном выражении от нуля до конца определенного интервала

Я прочитал ответ на общую информацию о регулярных выражениях здесь Изучение регулярных выражений [закрыто] , но не смог найти решение.

Как заставить его вернуть FALSE для любого ввода более 4 bc в A7?

Большое спасибо за вашу помощь!

1 Ответ

2 голосов
/ 30 июня 2019

Регулярное выражение не обязательно должно соответствовать всей строке, с которой вы проверяете его по умолчанию.Функция вернет True, если регулярное выражение соответствует какой-либо подстроке предоставленной строки.

Чтобы изменить это поведение, добавьте символ ^, чтобы соответствовать началу строки субъекта, и символ $, чтобы соответствоватьего конец.

Например: =REGEXMATCH($A7,"^a(bc){0,4}$") не будет совпадать abcbcbcbcbc.

...