Latest web development tutorials

Регулярные выражения - Синтаксис

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

  • Каталог колонки, реж * .txt Ls * .txt или * .txt не в регулярном выражении, потому что есть * * с регулярным выражением смысл отличается.
  • Метод построения регулярного выражения и создавать математические выражения, точно так же. То есть, используя различные метасимволах и операторы могут объединять небольшие выражения вместе, чтобы создать большие выражения. Компонент регулярные выражения могут быть один символ, набор символов, выберите диапазон символов, между персонажами, или любой комбинации всех этих компонентов.

Регулярные выражения в текстовом режиме состоит из общих символов (например, буквы от А до Z) и специальных символов (так называемый "метасимволов") их. Описание режима при поиске текста, чтобы соответствовать одной или нескольких строк. Регулярное выражение в качестве шаблона, режим символов и строки поиска, чтобы соответствовать.

Обычные символы

Обычные символы явным образом не обозначены как метасимволы все печатные и непечатные символы. Это включает в себя все прописные и строчные буквы, все цифры, все знаки препинания и другие символы.

Непечатаемые символы

Непечатаемые символы могут быть частью регулярного выражения. В следующей таблице перечислены управляющие последовательности, которые представляют собой непечатаемые символы:

字符 描述
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

Специальные символы

Так называемые специальные символы, в том, что некоторые символы имеют особое значение, так как он говорит: "* .txt" в *, просто означает, что строковое представление какого-либо смысла. Если вы хотите, чтобы найти имя файла с расширением * файла, вам нужно, чтобы избежать *, то есть плюс в передней \. Ls \ *. TXT.

Многие метасимволы требуют специальной обработки при попытке сопоставить их. Для того, чтобы соответствовать этим специальные символы, вы должны сначала сделать символ "побег", то есть, символ обратной косой черты (\) перед ними. В следующей таблице перечислены специальные символы регулярных выражений:

特别字符 描述
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。

спецификатор

Классификатор используется для указания регулярное выражение данного компонента должно появиться много раз, чтобы встретиться матч. Там * или + или? Или {п} или {п,} или {п, т} в общей сложности 6.

Регулярные выражения классификаторы являются:

字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

Так как номер главы в большом входном документе, скорее всего, более девяти, так что вам нужен способ иметь дело с двумя или тремя главами чисел. Классификатор дает вам эту возможность. Следующее регулярное выражение совпадает с любым количеством битов, пронумерованных заголовков глав

/Chapter [1-9][0-9]*/

Обратите внимание, что классификатор появляется после выражения диапазона. Таким образом, это относится ко всему диапазону выражения, в данном случае, только определенное число из 0-9 (в том числе от 0 до 9).

+ Классификатор не используется здесь, как и во втором положении или заднем положении, не обязательно должен иметь номер. И не использовать? Характер, поскольку оно ограничивает число разделов, чтобы только две цифры. Вы должны соответствовать по крайней мере один номер главы и пробелы обратно.

Если вы знаете номер главы ограничивается только 99 глав, вы можете использовать следующее выражение, чтобы указать, по меньшей мере, один, а по крайней мере две цифры.

/Chapter [0-9]{1,2}/

Недостатком вышеуказанного выражения больше 99 глав, по-прежнему номер совпадает только начало двух цифр. Другой недостаток состоит в том, что глава 0 будет также соответствовать. Лучше согласование только две цифры выражения выглядит следующим образом:

/Chapter [1-9][0-9]?/

или

/Chapter [1-9][0-9]{0,1}/

*, +, А? Отборочные жадные , потому что они совпадают много текста, только за ними, плюс? Может быть достигнуто нежадным или минимальное совпадение.

Например, вы можете искать HTML документов, чтобы найти вложенных в H1 теги заголовков разделов. Текст в документе следующим образом:

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

Все содержимое соответствуют следующие выражения, начиная с менее чем знак (<), чтобы закрыть H1 тег больше, чем символ (>) между ними.

/<.*>/

Если вам нужно только, чтобы соответствовать начало тегов H1, следующий "не жадный" выражение соответствует только <H1>.

/<.*?>/

К *, + или? После того, как в квалификационном месте? Выражения могут переключаться с "жадный", чтобы "не жадный" или минимальным выражениям.

локатор

Локатор позволяет регулярное выражение фиксируется на начало или конец строки. Кроме того, они позволяют создать такой регулярное выражение, эти регулярные выражения появляются в слове, слово в начале или в конце слова.

Локатор используется для описания строки или слова границу, ^ и $ указывают на начало и конец строки, \ Ь граница описание до или после слова, \ B представляет собой граница слова.

Регулярные выражения классификаторы являются:

字符 描述
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b 匹配一个字边界,即字与空格间的位置。
\B 非字边界匹配。

Примечание: Вы не можете использовать Классификатор и точка привязки. Потому что непосредственно перед или после того, как границы оборачивания или слово может иметь не более чем в одном месте, и, следовательно, не допускает такое выражение, как ^ *.

Для того, чтобы соответствовать строку текста в начале текста, пожалуйста, начните с помощью выражения п ^ характер. ^ Не используйте этого используйте выражение в скобках в замешательство.

Чтобы соответствовать текст в конце строки текста, увидеть конец выражения с помощью $ символов в положительном.

Чтобы использовать заголовки разделов в поиске, когда точка привязки, следующее регулярное выражение соответствует название главы, название содержит только два с последующим числом, и начало линии:

/^Chapter [1-9][0-9]{0,1}/

Истинные заголовки глав появляются только в начале строки, но это единственный текст в строке. Оказывается, линия впервые появилась в конце той же строки. Следующее выражение может быть уверен, что указанный матч матч только без согласования перекрестных ссылок раздел. Создавая только соответствовать начало и конец строки текста регулярного выражения, вы можете это сделать.

/^Chapter [1-9][0-9]{0,1}$/

Граница Матч слово немного отличается, но регулярные выражения очень важная возможность. Граница Слово есть место и пространство между словами. граница слова любое другое место. Следующее выражение совпадает с началом слова Глава трех персонажей, потому что эти три символа появляются после того, как границы слова:

/\bCha/

\ Позиция Б символов очень важно. Если оно находится в начале строки, которая будет соответствовать, он ищет совпадение в начале слова. Если она находится в конце строки, он ищет соответствие в конце слова. Например, следующее выражение соответствия слов Глава строки тер, как он появляется в передней части границы слова:

/ter\b/

Следующее выражение совпадает со строкой Глава уместна, но не соответствует строка способности APT:

/\Bapt/

Апт слово строка появляется в главе граница слова, но слово появляется в пригодности границы слова. Для \ B граничного оператора несловообразующим, позиция не имеет значения, потому что матч не заботится, является ли это в начале или в конце слова.

выбрать

Используйте круглые скобки, чтобы приложить все выборы, с вариантами между соседними разделены |. Но есть побочный эффект использования круглых скобок, это соответствующие матчи будут сохраняться в кэше, доступные в настоящее время :? на первый вариант, чтобы устранить этот побочный эффект.

В чем :? Non-захвата один элемент, есть два не захватывая элемент является = и два имеют большее значение, бывший Позитивное доследственная в любом старте, совпадающим круглые скобки это выражение ??! Позиционный шаблон, чтобы соответствовать строке поиска, которая негативно доследственной, в любом положении пуска не соответствует шаблону регулярного выражения, чтобы соответствовать строке поиска.

Обратные ссылки

Для регулярного выражения или части рисунка с обеих сторон приведет к дополнительным скобках уместным матч в буфер временного хранения, каждый суб-захвачены, хранятся в порядке слева направо матча появляются в шаблоне регулярного выражения. Буфер № 1 с самого начала, может хранить до 99 захваченных подвыражения. Каждый буфер может использовать '\ N' посетить, где п представляет собой один или два десятичных цифры идентифицируют специальный буфер.

Вы можете использовать не-захватив метасимволы ':?', Или переписать захват, сохранить игнорировать соответствующий матч '=?'?! '.

Обратные_связи легче всего, один из самых полезных является возможность предоставить текст, чтобы найти два одинаковых смежных матчи слов. В качестве примера в следующем предложении:

Is is the cost of of gasoline going up up?

Выше предложение, очевидно, имеют много повторяющихся слов. Если мы сможем разработать метод, чтобы найти предложение, а не найти дублированные вхождения каждого слова, что больше пользы. Следующее регулярное выражение использует один подвыражению для достижения этой цели:

/\b([a-z]+) \1\b/gi

Захват выражения, а [AZ] + указано, в том числе одной или нескольких букв. Вторая часть регулярного выражения, чтобы соответствовать ребенка ранее захваченное ссылки, то есть, второе вхождение слова просто соответствует выражением в скобках. \ 1 указывает первый суб-матч. Граница слова метасимволами гарантируют, что только обнаружить слово целиком. В противном случае, фразы, такие как "выдается" или "это" и тому подобное, не правильно идентифицировать это выражение.

Регулярное выражение после того, как глобальный тег (г) указывает на то, это выражение применяется к входной строке можно найти как можно больше матчей. Выражение чувствительно к регистру в конце (I) тега определяет не чувствительны к регистру. Потенциальный матч многострочный тег определяет разрывы строк может происходить с обеих сторон.

Обратные также может быть универсального индикатора ресурса (URI) на его компоненты. Предположим, вы хотите быть разбиты на следующие протокола URI (FTP, HTTP и т.д.), адреса домена и страницы / путь:

http://www.w3cschool.cc:80/html/html-tutorial.html

Следующее регулярное выражение обеспечивает такую ​​функциональность:

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

Первый вводное подвыражение захватывает часть протокола веб-адреса. Подвыражение соответствует любому слово двоеточие и два слэша перед. Второй вводное подвыражение захватывает адрес домена часть адреса. Один или несколько символов, кроме: подвыражения матч / и. Третий вводное подвыражение захватить номер порта (если он указан). Подвыражение соответствует нулю или более цифр после двоеточия. Это может быть повторен только один раз подвыражения. И, наконец, четвертый вводное подвыражение захватывает путь, указанный веб-адрес и / или страницу. Это не относится к суб-выражение соответствует любой последовательности символов # или символы пробела.

Регулярное выражение применяется к выше URI, запись суб-соответствия содержит следующие элементы:

  • Первый вводное подвыражение содержит "HTTP"
  • Второй вводное подвыражение содержит "www.w3cschool.cc"
  • Третий вводное подвыражение с ": 80"
  • Четвертый вводное подвыражение содержит "/html/html-tutorial.html"