Русский
Русский
English
Статистика
Реклама

Regular expressions

Перевод Шпаргалка по регулярке

17.06.2020 08:10:07 | Автор: admin


Доброго времени суток, друзья!

Представляю Вашему вниманию перевод статьи Regex Cheat Sheet автора Emma Bostian.

Регулярные выражения или regex используются для поиска совпадений в строке.

Ищем совпадение по шаблону

Используем метод .test()

const testString = 'My test string'const testRegex = /string/testRegex.test(testString) // true

Ищем совпадение по нескольким шаблонам

Используем | альтернацию

const regex = /yes|no|maybe/

Игнорируем регистр

Используем флаг i

const caseInsensitiveRegex = /ignore case/iconst testString = 'We use the i flag to iGnOrE CasE'caseInsensitiveRegex.test(testString) // true

Извлекаем первое совпадение в переменную

Используем метод .match()

const match = 'Hello World!'.macth(/hello/i) // 'Hello'


Извлекаем все совпадения в массив

Используем флаг g

const testString = 'Repeat repeat rePeAt'const regexWithAllMatches = /Repeat/gitestString.match(regexWithAllMatches) // ['Repeat', 'repeat', 'rePeAt']

Ищем любой символ

Используем символ.

const regexWithWildCard = /.at/giconst testString = 'cat BAT cupcake fAt mat dog'const allMatchingWords = testString.match(regexWithWildCard) // ['cat', 'BAT', 'fAt', 'mat']

Ищем один вариативный символ

Используем классы, позволяющие в [ ] определять группу искомых символов

const regexWithCharClass = /[cfm]at/gconst testString = 'cat fat bat mat'const allMatchingWords = testString.match(regexWithCharClass) // ['cat', 'fat', 'mat']

Ищем буквы алфавита

Используем диапазон [a-z]

const regexWithCharRange = /[a-e]at/const catString = 'cat'const batString = 'bat'const fatString = 'fat'regexWithCharRange.test(catString) // trueregexWithCharRange.test(batString) // trueregexWithCharRange.test(fatString) // false

Ищем определенные числа или буквы

Используем диапазон [a-z0-9]

const regexWithLetterAndNumberRange = /[a-z0-9]/igconst testString = 'Emma19382'testString.macth(regexWithLetterAndNumberRange) // true

Ищем единственный неизвестный символ

Для исключения ненужных символов используем символ ^ отрицательный набор

const allCharsNotAllowed = /[^aeiou]/giconst allCharsOrNumbersNotAllowed = /^aeiou0-9/gi

Ищем символы, встречающиеся в строке один или более раз

Используем символ +

const oneOrMoreAsRegex = /a+/giconst oneOrMoreSsRegex = /s+/giconst cityInFlorida = 'Tallahassee'cityInFlorida.match(oneOrMoreAsRegex) // ['a', 'a', 'a']cityInFlorida.match(oneOrMoreSsRegex) // ['ss']

Ищем символы, встречающиеся в строке ноль или более раз

Используем символ *

const zeroOrMoreOsRegex = /hi*/giconst normalHi = 'hi'const happyHi = 'hiiiiii'const twoHis = 'hiihii'const bye = 'bye'normalHi.match(zeroOrMoreOsRegex) // ['hi']happyHi.match(zeroOrMoreOsRegex) // ['hiiiiii']twoHis.match(zeroOrMoreOsRegex) // ['hii', 'hii']bye.match(zeroOrMoreOsRegex) // null

Ленивый поиск совпадений

Ищем наименьшую часть строки, удовлетворяющую заданному условию.
Regex по умолчанию является жадным (ищет самую длинную часть строки, удовлетворяющую условию). Используем символ?

const testString = 'catastrophe'const greedyRegex = /c[a-z]*t/giconst lazyRegex = /c[a-z]*?t/gitestString.match(greedyRegex) // ['catast']testString.match(lazyRegex) // ['cat']

Ищем с помощью стартового шаблона (шаблона начала строки)

Для поиска строки по стартовому шаблону используем символ ^ (снаружи набора символов в [ ] в отличие от отрицательного набора)

const emmaAtFrontOfString = 'Emma likes cats a lot.'const emmaNotAtFrontOfString = 'the cats Emma likes are fluffy'const startingStringRegex = /^Emma/startingStringRegex.test(emmaAtFrontOfString) // truestartingStringRegex.test(emmaNotAtFrontOfString) // false

Ищем с помощью завершающего шаблона (шаблона конца строки)

Для поиска строки по завершающему шаблону используем символ $

const emmaAtBackOfString = 'The cats do not like Emma'const emmaNotAtBackOfString = 'Emma loves the cats'const endingStringRegex = /Emma$/endingStringRegex.test(emmaAtBackOfString) // trueendingStringRegex.test(emmaNotAtBackOfString) // false

Ищем все буквы или числа

Используем \w

const longHand = /[A-za-z0-9_]+/const shortHand = /\w+/const numbers = '42'const myFavouriteColor = 'magenta'longHand.test(numbers) // trueshortHand.test(numbers) // truelongHand.test(myFavouriteColor) // trueshortHand.test(myFavouriteColor) // true

Ищем любые символы, за исключением букв и чисел

Используем \W

const noAlphaNumericCharRegex = /\W/giconst weirdCharacters = '!_$!'const alphaNumericCharacters = 'ab24EF'noAlphaNumericCharRegex.test(weirdCharacters) // truenoAlphaNumericCharRegex.test(alphaNumericCharacters) // true

Ищем числа

Используем \d вместо [0-9]

const digitsRegex = /\d/gconst stringWithDigits = 'My cat eats $20.00 worth of food a week'stringWithDigits.match(digitsRegex) // ['2', '0', '0', '0']

Ищем не числа

Используем \D

const nonDigitsRegex = /\D/gconst stringWithLetters = '101 degrees'stringWithLetters.match(nonDigitsRegex) // [' ', 'd', 'e', 'g', 'r', 'e', 'e', 's']

Ищем пробелы

Используем \s

const sentenceWithWhitespace = 'I like cats!'const spaceRegex = /\s/gspaceRegex.match(sentenceWithWhitespace) // [' ', ' ']

Ищем любые символы, за исключением пробелов

Используем \S

const sentenceWithWhitespace = 'C a t'const nonWhitespaceRegex = /\S/gsentenceWithWhitespace.match(nonWhitespaceRegex) // ['C', 'a', 't']

Ищем определенное количество символов

Используем {от, до} квантификатор

const regularHi = 'hi'const mediocreHi = 'hiii'const superExcitedHey = 'heeeeyyyyy!!!'const excitedRegex = /hi{1,4}/excitedRegex.test(regularHi) // trueexcitedRegex.test(mediocreHi) // trueexcitedRegex.test(superExcitedHey) // false

Ищем минимальное количество символов

Используем {от, }

const regularHi = 'hi'const mediocreHi = 'hiii'const superExcitedHey = 'heeeeyyyyy!!!'const excitedRegex = /hi{2,}/excitedRegex.test(regularHi) // falseexcitedRegex.test(mediocreHi) // trueexcitedRegex.test(superExcitedHey) // false

Ищем точное количество символов

Используем {число символов}

const regularHi = 'hi'const mediocreHi = 'hiii'const superExcitedHey = 'heeeeyyyyy!!!'const excitedRegex = /hi{2}/excitedRegex.test(regularHi) // falseexcitedRegex.test(mediocreHi) // trueexcitedRegex.test(superExcitedHey) // false

Ищем ноль или один символ

Используем ? после искомого символа

const britishSpelling = 'colour'const americanSpelling = 'Color'const langRegex = /coloru?r/ilangRegex.test(britishSpelling) // truelangRegex.test(americanSpelling) // true

Прим. пер.: шпаргалка от MDN.

Благодарю за потраченное время. Надеюсь, оно было потрачено не зря.
Подробнее..

День открытых данных 2021. Онлайн

01.03.2021 20:22:05 | Автор: admin

image


1-6 марта приглашаем на мероприятия, приуроченные к Международному Дню открытых данных 2021.


Это крупнейшее ежегодное международное событие, которое помогает продвигать концепцию открытых данных среди органов государственной власти, бизнес-корпораций, некоммерческих организаций и гражданского общества. Организатором Дня открытых данных в России выступает АНО Информационная культура.


Рассказываем, какие мероприятия мы приготовили для участников в этом году.
Накануне Дня открытых данных, с 1 по 5 марта, проведем серию практических онлайн мастер-классов по работе с открытыми данными.


  • 1 марта, мастер-класс Вскрываем декларации. Как при помощи регулярных выражений привести Wordовскую табличку к пригодной для анализа форме. Доступна видеозапись.
  • 2 марта, мастер-класс О чем говорят депутаты Госдумы? Анализ текстовых данных на Python.
  • 3 марта, мастер-классы по работе с геопространственными данными и картами для новичков и профи.
  • 4 марта, мастер-класс по поиску открытых данных от DataMasters.
  • 5 марта, мастер-класс Российская официальная статистика: как сделать работу с данными удобнее, а данные понятнее?.
  • 5 марта, мастер-класс Визуализация данных в ObservableHQ.

6 марта пройдет онлайн-конференция День открытых данных.


В центре внимания вопросы о том, что происходит с открытостью в России и мире и как использовать данные для эффективного решения конкретных проблем и задач общества. В дискуссиях примут участие не только российские эксперты, но и представители крупнейших международных проектов, продвигающих ценности и идеологию открытых данных: Global Data Barometer, The Humanitarian Data Exchange.


В программе дискуссии и выступления:


  • Дискуссия. Бизнес на открытости: зачем заниматься открытым кодом и открытыми данными
  • Дискуссия. Как инструменты оценки влияют на открытость государства?
  • Дискуссия. Доступность данных о госфинансах
  • Дискуссия. Данные переписи населения 2021: приватность vs. польза для общества
  • Выступления. Что происходит с тематикой открытости в мире?

Программа и регистрация: opendataday.ru/msk. Трансляция будет доступна и бесплатна для всех желающих.


Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru