В книге Eloquent JavaScriptchapter 9: Regular Expressions в соответствии с разделом «разборе INI File» есть пример, который включает в себя регулярное выражение, которое я не поймать вообще. Автор пытается разобрать следующий контент:В чем разница между этими двумя регулярными выражениями? (Понимание? Квантор)
searchengine=http://www.google.com/search?q=$1
spitefulness=9.7
; comments are preceded by a semicolon...
; each section concerns an individual enemy
[larry]
fullname=Larry Doe
type=kindergarten bully
website=http://www.geocities.com/CapeCanaveral/11451
[gargamel]
fullname=Gargamel
type=evil sorcerer
outputdir=/home/marijn/enemies/gargamel
О правилах для этого формата состояния,
Пустые строки и строки, начинающиеся с запятой игнорируются.
Код, анализирующий этот контент, просматривается каждую строку в файле. Для того, чтобы обработать комментарии, он включает это выражение
^\s*(;.*)?
Насколько я понимаю, этот процесс выражения линии, которые могут начинаться с последовательностью
пробельных символов, включая пробел, табуляцию, форму корма, корм линии и другие Unicode пространства
(source) до тех пор, пока не появится запятая ;, а затем последовательность «любой символ, кроме терминаторов строк: \ n, \ r, \ u2028 или \ u2029.". Все это ограничивалось {0,1}.
Я не получаю значение квантификатора ? здесь. Я не могу найти (regex101) в любом случае, когда проблема ограничения строк соответствия не ограничивается. Почему это выражение отличается от этого другого:
^\s*(;.*)
Заранее спасибо.
Текст на связанной странице говорит, что вход сначала разделяется на строки, поэтому многострочный режим не используется, и для '' '' s '' не должно быть символов новой строки. (Это тоже привлекло мое внимание.) –
Хорошо, я изменил ответ на * (если модификатор MULTILINE включен, а вход - текст, содержащий несколько строк) *. Это общее замечание для будущих читателей. –
Спасибо. Я пропустил, выражение должно было совпадать и для пустых строк. Спасибо, что ответили так быстро. –