Насколько дорогостоящий поиск без учета регистра по сравнению с поиском с учетом регистра?

Да. Если система перестала работать во время начальной загрузки, можно войти в корневую оболочку. Если у Вас есть отдельный/usr, некоторые оболочки успешно могут не запуститься.

Я был бы совет создать учетную запись toor (uid 0, ценуроз 0) с нестандартной оболочкой, в то время как левый корень с оболочкой по умолчанию.

4
12.09.2016, 04:32
2 ответа

I-соответствие между abC и aBc может легко быть сделан, если abC преобразовывается к нижнему регистру (однажды), и каждый вход как aBc переводится в нижний регистр также. Затем нормальное соответствие.

Но возможно это сделано, только путем игнорирования некоторых битов. 65 и 97. Различие равняется 32, питанию 2, таким образом, оно может легко быть замаскировано. Даже 'ä' (228) и 'Ä' (196) имеют различие 32, но я не уверен, содержит ли он для всех символов в расширенном ASCII.

3
27.01.2020, 20:54
  • 1
    Это - справедливое предположение, но только работало бы на фиксированное строковое сворачивание случая и поэтому не соответствует остальной части механизма, самого эффективного для общего соответствия регулярного выражения. –  msw 24.05.2011, 18:10

grep как наиболее регулярное выражение механизмы переводят шаблон, который Вы указываете в детерминированный конечный автомат (DFA).

Распространенный способ выразить нечувствительность к регистру при помощи классов символов для каждого алфавитного, поэтому Ваш пример был бы больше похож [aA][bB][cC]. Соответствия класса отдельного символа часто реализуются как поиски набора битов где немного набора, содержащего 1s в соответствии положений a и A создается в регулярном выражении-> время компиляции DFA.

Это означает это соответствовать [aA] DFA должны только принять значение вводимого символа, использовать его в качестве индекса к набору битов - который является O (1) операция - таким образом, Вы не видите combinatoric взрыв времени что Ваш эквивалент

"abc|abC|aBc|aBC|Abc|AbC|ABc|ABC"

предложил бы. Конструкция DFA от регулярных выражений является приложением, "если Вы готовы провести некоторое время впереди (DFA, создающий), можно действительно сохранить циклы позже (распознавание DFA).

2
27.01.2020, 20:54
  • 1
    Две вещи: Какой grep? На Linux grep, egrep, fgrep часто, или всегда связывает t тот же исполняемый файл, но это традиционно не было верно. Egrep часто использовал различные алгоритмы, чем grep, fgrep всегда привыкший к. См.: Andrew Hume, "Рассказ о двух властях", Практика программного обеспечения и Опыт, 18, № 11, ноябрь 1988. Посмотрите, что Регулярное выражение Russ Cox Соответствовать Может Быть Простым И Быстрым (swtch.com/~rsc/regexp/regexp1.html) для синхронизаций DFA и NFA базирующееся соответствие regexp. –  Bruce Ediger 24.05.2011, 18:57

Теги

Похожие вопросы