matches();
не буферизует, а find()
- буферы. find()
сначала выполняет поиск в конце строки, индексирует результат и возвращает логическое значение и соответствующий индекс.
Вот почему, когда у вас есть такой код, как
1:Pattern.compile("[a-z]");
2:Pattern.matcher("0a1b1c3d4");
3:int count = 0;
4:while(matcher.find()){
5:count++: }
В 4: механизм регулярных выражений с использованием структуры шаблонов будет читать весь ваш код (индекс для индексации, как указано regex[single character]
, чтобы найти хотя бы одно совпадение. Если такое совпадение найдено, оно будет проиндексировано, тогда цикл будет выполняться на основе индексированного результата else, если он не выполнил вычисления, как matches()
; Оператор while никогда не будет выполняться, так как первый символ совпадающей строки не является алфавитом.
Работает. Я понятия не имею, почему, но это делает.
Для дальнейшего использования:
Это работает, потому что директивы псевдонима процессов Apache в порядке, и используют первое соответствие. Это всегда совершало нападки Alias /
, который будет соответствовать чему-либо, прежде WSGIScriptAlias
.
Во-первых, все Перенаправления обрабатываются, прежде чем Псевдонимы обрабатываются, и поэтому запрос, который соответствует a
Redirect
илиRedirectMatch
никогда не будет иметь Псевдонимов примененными. Во-вторых, Псевдонимы и Перенаправления обрабатываются в порядке, они появляются в конфигурационных файлах с первым имеющим приоритет соответствием.
Обратите внимание, что директивы Alias и WSGIScriptAlias не имеют одинакового приоритета. Таким образом, они не будут обрабатываться в указанном порядке файлов. Вместо этого все директивы Alias имеют приоритет над директивами WSGIScriptAlias. Таким образом, не имело бы значения, если бы псевдоним для '/' появился после WSGIScriptAlias, он все равно имел бы приоритет.