Наръчник за начинаещи за редовни изрази
Опитали ли сте някога да откриете повтарящ се модел в текста? Може би сте използвали нещо като функцията за търсене във вашия браузър или текстообработваща програма, но когато трябва да намерите нещо по-сложно, може да е като намиране на игла в пословичната купа сено.
За щастие, има начин да изберете точни шаблони в текста точно до характера. Тя се нарича регулярни изрази и ви позволява да станете майстор на търсенето чрез текст.
Ако сте обръщали някакво внимание на помощните програми за Linux, вероятно сте забелязали, че често използват нещо, наречено регулярни изрази. Въпреки че Unix и Linux ги правят популярни, регулярни изрази се предлагат в различни пакети, включително Microsoft Word.
Редовните изрази се използват най-вече в няколко забележителни програми на Линукс, включително grep (което означава "Global Regular Expression Print"), Awk и Sed.
По-добре е да мислим за регулярните изрази като малък език, основите на които могат да бъдат описани в малко пространство.
Можете да търсите чрез инструменти като Grep или Ack от стандартния вход или текстов файл.
Например, ако се опитвате да намерите термина "Firefox" в изхода от командата ps, ето как ще го направите:
ps | намерени онлайн филми
И ето как ще намерите термина "maketecheasier" във файл.
grep maketecheasier somefile
метасимвола
В регулярните изрази можете също да търсите части от низ. Начинът, по който бихте направили това, е с два знака. Те всъщност се наричат метахарактери. Те са подобни на съвпаденията със заместващи символи, които може да сте използвали в черупката.
- Msgstr "означава единичен знак. Моделът "ct" съвпада с думите "котка", "нарязан" и "детско легло" например.
- Метахървърът "*" означава намиране на предишния символ 0 или повече пъти. Шаблонът "l. * X" ще намери "linux", както и всякакви други думи, които се случиха да съответстват на същия модел.
Причината, поради която просто не можете да използвате нещо като "l*x"
като теб в черупката, е, че съвпадането с 0 или повече символа означава, че ще намери линии, които нямат "l", следван от друг знак. С други думи, всяка линия, която се опитва да бъде съчетана, което е абсолютно безполезна.
Намиране на модели в началото или в края
Можете също да намерите модели, започващи от началото или от края на линиите.
- В началото се намира символът "^"
- "$" Съвпада в края.
Например, "sier$"
ще съответства на "Make Tech Easier" и "^Make"
ще съответства на "Make."
Намиране на мач в диапазон
Можете също да получите в по-сложни символи. Всичко, което поставяте в квадратни скоби, ще бъде съчетано като диапазон. Например " [az]
" съвпада с всички малки букви. " [a-zA-Z]
" съвпада с всички букви. " [a-zA-Z0-9]
" съвпада с буквено-цифрови символи. Вътре на скобите знакът "^" отрича нищо. " [^a-zA-Z]
" съвпада с всичко, което не е писмо.
Можете да намерите и граници на думите с " \<
" и " \>
" знака. Шаблонът " \
" съвпада с "Linux", очевидно.
Можете да съответствате на нещо конкретно няколко пъти с къдрави скоби. " {3}
" съвпада с нещо три пъти и " {3, 5}
" съвпада с нещо между 3 и 5 пъти.
С тези прости градивни елементи можете да се съчетаете с някои доста сложни неща. Има много повече регулярни изрази, отколкото могат да бъдат обяснени в кратка статия. Ако искате изчерпателно лечение на обекта, трябва непременно да проверите мастерирането на редовните изрази от Джефри Фрид Фридл.
Оповестяване: Тази статия съдържа филиал на връзка. Докато пишем само за продукти, за които смятаме, че заслужават да бъдат на този сайт, Make Tech Easier може да спечели малка комисионна, ако кликнете и купите въпросния продукт.
Image Credit: xkcd