Spec-Zone .ru
спецификации, руководства, описания, API
|
Наиболее каноническая форма сопоставления с образцом, поддерживаемого этим API, является соответствием строкового литерала. Например, если регулярное выражение foo
и строка ввода foo
, соответствие успешно выполнится, потому что строки идентичны. Испытайте это с тестовым ремнем безопасности:
Enter your regex: foo Enter input string to search: foo I found the text foo starting at index 0 and ending at index 3.
Это соответствие имело успех. Отметьте, что, в то время как строка ввода является 3 символами долго, запуск индексирует, 0, и конец индексируют, 3. Условно, диапазоны являются содержащими из начала, индексируют, и монопольный из конца индексируют, как показано в следующем числе:
Строковый литерал foo, с пронумерованными ячейками и индексирует значения.
Каждый символ в строке находится в ее собственной ячейке с индексировать позициями, указывающими между каждой ячейкой. Строка "foo" запускается в, индексируют 0, и концы в индексируют 3, даже при том, что символы непосредственно только занимают ячейки 0, 1, и 2.
С последующими соответствиями Вы заметите некоторое перекрытие; запуск индексирует для следующего соответствия, то же самое, поскольку конец индексирует предыдущего соответствия:
Enter your regex: foo Enter input string to search: foofoofoo I found the text foo starting at index 0 and ending at index 3. I found the text foo starting at index 3 and ending at index 6. I found the text foo starting at index 6 and ending at index 9.
Этот API также поддерживает много специальных символов, которые влияют на способ, которым является соответствующим образец. Измените регулярное выражение на cat.
и строка ввода к cats
. Вывод появится следующим образом:
Enter your regex: cat. Enter input string to search: cats I found the text cats starting at index 0 and ending at index 4.
Соответствие все еще успешно выполняется, даже при том, что точка".
"не присутствует в строке ввода. Это успешно выполняется, потому что точка является метасимволом — символ с особым значением, интерпретируемым matcher. Метасимвол "." означает "любой символ", который является, почему соответствие преуспевает в этом примере.
Метасимволы, поддерживаемые этим API: <([{\^-=$!|]})?*+.>
@
и #
никогда не переносите особое значение. Есть два способа вынудить метасимвол быть обработанным как обычный символ:
\Q
(который запускает кавычку), и \E
(который заканчивает это).При использовании этого метода, \Q
и \E
может быть помещен в любое расположение в пределах выражения, при условии, что \Q
на первом месте.