regexr.com против regex101.com - PullRequest
1 голос
/ 03 мая 2020

Учитывая эту строку:

 z;
hh ;d;
;
;
;
12;b
;
bb;b
;;;
;;

И это выражение:

^(?:;+)\R*

Я получаю 2 разных результата в regex101.com и regexr. ком . Разница в том, что regex101.com имеет дополнительный \ n в конце, в поле замены, а regexr.com не

Вопросы:

1) Из моего ограниченного опыта regex regexr.com показывает правильный ответ, это правильно?

2) Различия похожи на эти ошибки или просто различия в реализациях? Так в принципе они оба правильные?

1 Ответ

0 голосов
/ 03 мая 2020

Оба тестера регулярных выражений дают одинаковый результат. Пропущенная новая строка в regexr.com является всего лишь иллюзией, вызванной элементом HTML, содержащим результат замены с атрибутом readonly, что делает невозможным наведение курсора на символ новой строки. Но то, что вы не можете навести на него курсор, не означает, что он не существует.

Если вы очистите поля регулярного выражения и замены, так что все, что находится в поле «текст», будет прямо к «результату». Затем введите в текстовое поле одну строку, нажмите ввод, чтобы вставить новую строку. Вы не сможете найти этот символ новой строки в области «результата».

enter image description here

Следовательно, это всего лишь причуда regexr.com, не проблема, указанная c для этого конкретного регулярного выражения.

Если вы хотите иметь возможность навести на него курсор, go для инструментов разработчика вашего браузера, проверьте область «результата», и вы Вы увидите, что это textarea элемент, подобный следующему:

<div class="result">
    <textarea readonly>
        ...
    </textarea>
</div>

Удалите слово readonly, и вы сможете установить курсор на символ новой строки.


Оба тестера регулярных выражений верны. Хотя вы удаляли символы новой строки после каждого совпадения, используя \R, последний символ новой строки в результате фактически получается из символа новой строки, заканчивающегося строкой bb;b. Поскольку bb;b не совпадает, эта новая строка не удаляется.

...