From f4c1d1e274cea921e04d87f8488a948d832c4cb9 Mon Sep 17 00:00:00 2001
From: GrayLand
+
+g@e<2DDml7E=_3j
z!Ys6OGrpZDt2P!0OOuJ$Ic?K8OxJ$BpZ<8b`iG-rFIR+oso#RB-ppv46~dHRgnj~n
z#u@b_(663}TXE_C(wn+$sF(d@FhMQs^Og3Rq
MvLiUpp
zH9siDTaDvhW5wG*a6hh~672UVzG&;a3)Ff$fZRk-i(JCsftrh`_(a@I4QE?9$_7P(
z*@WC24b)RUs=99F;6>a1o
+rDdGW%w3xve2Y4`xd6~kFHRqMJ|V4_wP}C7#!1>^5VeRLZdw;Z1TR(xxEYQl
zmnBG&(_e2
#mpquuHF
zv|~`y^rzh&$ih9?es9`>O)#&v<%2!86eJ
+
+
+
+## 什么是正则表达式?
+
+> 正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.
+
+
+一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式.
+例如"Regular expression"是一个完整的句子, 但我们常使用缩写的术语"regex"或"regexp".
+正则表达式可以用来替换文本中的字符串,验证形式,提取字符串等等.
+
+想象你正在写一个应用, 然后你想设定一个用户命名的规则, 让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑.
+我们使用以下正则表达式来验证一个用户名:
+
+
+
+
+"the" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/dmRygT/1)
+
+正则表达式`123`匹配字符串`123`. 它逐个字符的与输入的正则表达式做比较.
+
+正则表达式是大小写敏感的, 所以`The`不会匹配`the`.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/1paXsy/1)
+
+## 2. 元字符
+
+正则表达式主要依赖于元字符.
+元字符不代表他们本身的字面意思, 他们都有特殊的含义. 一些元字符写在方括号中的时候有一些特殊的意思. 以下是一些元字符的介绍:
+
+|元字符|描述|
+|:----:|----|
+|.|句号匹配任意单个字符除了换行符.|
+|[ ]|字符种类. 匹配方括号内的任意字符.|
+|[^ ]|否定的字符种类. 匹配除了方括号里的任意字符|
+|*|匹配>=0个重复的在*号之前的字符.|
+|+|匹配>1个重复的+号前的字符.
+|?|标记?之前的字符为可选.|
+|{n,m}|匹配num个中括号之前的字符 (n <= num <= m).|
+|(xyz)|字符集, 匹配与 xyz 完全相等的字符串.|
+|||或运算符,匹配符号前或后的字符.|
+|\|转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ ||
+|^|从开始行开始匹配.|
+|$|从末端开始匹配.|
+
+## 2.1 点运算符 `.`
+
+`.`是元字符中最简单的例子.
+`.`匹配任意单个字符, 但不匹配换行符.
+例如, 表达式`.ar`匹配一个任意字符后面跟着是`a`和`r`的字符串.
+
+
+".ar" => The car parked in the garage.
+
+
+[在线练习](https://regex101.com/r/xc9GkU/1)
+
+## 2.2 字符集
+
+字符集也叫做字符类.
+方括号用来指定一个字符集.
+在方括号中使用连字符来指定字符集的范围.
+在方括号中的字符集不关心顺序.
+例如, 表达式`[Tt]he` 匹配 `the` 和 `The`.
+
+
+"[Tt]he" => The car parked in the garage.
+
+
+[在线练习](https://regex101.com/r/2ITLQ4/1)
+
+方括号的句号就表示句号.
+表达式 `ar[.]` 匹配 `ar.`字符串
+
+
+"ar[.]" => A garage is a good place to park a car.
+
+
+[在线练习](https://regex101.com/r/wL3xtE/1)
+
+### 2.2.1 否定字符集
+
+一般来说 `^` 表示一个字符串的开头, 但它用在一个方括号的开头的时候, 它表示这个字符集是否定的.
+例如, 表达式`[^c]ar` 匹配一个后面跟着`ar`的除了`c`的任意字符.
+
+
+"[^c]ar" => The car parked in the garage.
+
+
+[在线练习](https://regex101.com/r/nNNlq3/1)
+
+## 2.3 重复次数
+
+后面跟着元字符 `+`, `*` or `?` 的, 用来指定匹配子模式的次数.
+这些元字符在不同的情况下有着不同的意思.
+
+### 2.3.1 `*` 号
+
+`*`号匹配 在`*`之前的字符出现`大于等于0`次.
+例如, 表达式 `a*` 匹配以0或更多个a开头的字符, 因为有0个这个条件, 其实也就匹配了所有的字符. 表达式`[a-z]*` 匹配一个行中所有以小写字母开头的字符串.
+
+
+"[a-z]*" => The car parked in the garage #21.
+
+
+[在线练习](https://regex101.com/r/7m8me5/1)
+
+`*`字符和`.`字符搭配可以匹配所有的字符`.*`.
+`*`和表示匹配空格的符号`\s`连起来用, 如表达式`\s*cat\s*`匹配0或更多个空格开头和0或更多个空格结尾的cat字符串.
+
+
+"\s*cat\s*" => The fat cat sat on the concatenation.
+
+
+[在线练习](https://regex101.com/r/gGrwuz/1)
+
+### 2.3.2 `+` 号
+
+`+`号匹配`+`号之前的字符出现 >=1 次个字符.
+例如表达式`c.+t` 匹配以首字母`c`开头以`t`结尾,中间跟着任意个字符的字符串.
+
+
+"c.+t" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/Dzf9Aa/1)
+
+### 2.3.3 `?` 号
+
+在正则表达式中元字符 `?` 标记在符号前面的字符为可选, 即出现 0 或 1 次.
+例如, 表达式 `[T]?he` 匹配字符串 `he` 和 `The`.
+
+
+"[T]he" => The car is parked in the garage.
+
+
+[在线练习](https://regex101.com/r/cIg9zm/1)
+
+
+"[T]?he" => The car is parked in the garage.
+
+
+[在线练习](https://regex101.com/r/kPpO2x/1)
+
+## 2.4 `{}` 号
+
+在正则表达式中 `{}` 是一个量词, 常用来一个或一组字符可以重复出现的次数.
+例如, 表达式 `[0-9]{2,3}` 匹配 2~3 位 0~9 的数字.
+
+
+
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[在线练习](https://regex101.com/r/juM86s/1)
+
+我们可以省略第二个参数.
+例如, `[0-9]{2,}` 匹配至少两位 0~9 的数字.
+
+如果逗号也省略掉则表示重复固定的次数.
+例如, `[0-9]{3}` 匹配3位数字
+
+
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[在线练习](https://regex101.com/r/Gdy4w5/1)
+
+
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[在线练习](https://regex101.com/r/Sivu30/1)
+
+## 2.5 `(...)` 特征标群
+
+特征标群是一组写在 `(...)` 中的子模式. 例如之前说的 `{}` 是用来表示前面一个字符出现指定次数. 但如果在 `{}` 前加入特征标群则表示整个标群内的字符重复 N 次. 例如, 表达式 `(ab)*` 匹配连续出现 0 或更多个 `ab`.
+
+我们还可以在 `()` 中用或字符 `|` 表示或. 例如, `(c|g|p)ar` 匹配 `car` 或 `gar` 或 `par`.
+
+
+"(c|g|p)ar" => The car is parked in the garage.
+
+
+[在线练习](https://regex101.com/r/tUxrBG/1)
+
+## 2.6 `|` 或运算符
+
+或运算符就表示或, 用作判断条件.
+
+例如 `(T|t)he|car` 匹配 `(T|t)he` 或 `car`.
+
+
+"(T|t)he|car" => The car is parked in the garage.
+
+
+[在线练习](https://regex101.com/r/fBXyX0/1)
+
+## 2.7 转码特殊字符
+
+反斜线 `\` 在表达式中用于转码紧跟其后的字符. 用于指定 `{ } [ ] / \ + * . $ ^ | ?` 这些特殊字符. 如果想要匹配这些特殊字符则要在其前面加上反斜线 `\`.
+
+例如 `.` 是用来匹配除换行符外的所有字符的. 如果想要匹配句子中的 `.` 则要写成 `\.`.
+
+
+"(f|c|m)at\.?" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/DOc5Nu/1)
+
+## 2.8 锚点
+
+在正则表达式中, 想要匹配指定开头或结尾的字符串就要使用到锚点. `^` 指定开头, `$` 指定结尾.
+
+### 2.8.1 `^` 号
+
+`^` 用来检查匹配的字符串是否在所匹配字符串的开头.
+
+例如, 在 `abc` 中使用表达式 `^a` 会得到结果 `a`. 但如果使用 `^b` 将匹配不到任何结果. 应为在字符串 `abc` 中并不是以 `b` 开头.
+
+例如, `^(T|t)he` 匹配以 `The` 或 `the` 开头的字符串.
+
+
+"(T|t)he" => The car is parked in the garage.
+
+
+[在线练习](https://regex101.com/r/5ljjgB/1)
+
+
+"^(T|t)he" => The car is parked in the garage.
+
+
+[在线练习](https://regex101.com/r/jXrKne/1)
+
+### 2.8.2 `$` 号
+
+同理于 `^` 号, `$` 号用来匹配字符是否是最后一个.
+
+例如, `(at\.)$` 匹配以 `at.` 结尾的字符串.
+
+
+"(at\.)" => The fat cat. sat. on the mat.
+
+
+[在线练习](https://regex101.com/r/y4Au4D/1)
+
+
+"(at\.)$" => The fat cat. sat. on the mat.
+
+
+[在线练习](https://regex101.com/r/t0AkOd/1)
+
+## 3. 简写字符集
+
+正则表达式提供一些常用的字符集简写. 如下:
+
+|简写|描述|
+|:----:|----|
+|.|除换行符外的所有字符|
+|\w|匹配所有字母数字, 等同于 `[a-zA-Z0-9_]`|
+|\W|匹配所有非字母数字, 即符号, 等同于: `[^\w]`|
+|\d|匹配数字: `[0-9]`|
+|\D|匹配非数字: `[^\d]`|
+|\s|匹配所有空格字符, 等同于: `[\t\n\f\r\p{Z}]`|
+|\S|匹配所有非空格字符: `[^\s]`|
+
+## 4. 前后关联约束(前后预查)
+
+前置约束和后置约束都属于**非捕获簇**(用于匹配不在匹配列表中的格式).
+前置约束用于判断所匹配的格式是否在另一个确定的格式之后.
+
+例如, 我们想要获得所有跟在 `$` 符号后的数字, 我们可以使用正向向后约束 `(?<=\$)[0-9\.]*`.
+这个表达式匹配 `$` 开头, 之后跟着 `0,1,2,3,4,5,6,7,8,9,.` 这些字符可以出现大于等于 0 次.
+
+前后关联约束如下:
+
+|符号|描述|
+|:----:|----|
+|?=|前置约束-存在|
+|?!|前置约束-排除|
+|?<=|后置约束-存在|
+|?
+"[T|t]he(?=\sfat)" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/IDDARt/1)
+
+### 4.2 `?!...` 前置约束-排除
+
+前置约束-排除 `?!` 用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式
+`前置约束-排除` 定义和 `前置约束(存在)` 一样, 区别就是 `=` 替换成 `!` 也就是 `(?!...)`.
+
+表达式 `[T|t]he(?!\sfat)` 匹配 `The` 和 `the`, 且其后不跟着 `(空格)fat`.
+
+
+"[T|t]he(?!\sfat)" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/V32Npg/1)
+
+### 4.3 `?<= ...` 后置约束-存在
+
+后置约束-存在 记作`(?<=...)` 用于筛选所有匹配结果, 筛选条件为 其前跟随着定义的格式.
+例如, 表达式 `(?<=[T|t]he\s)(fat|mat)` 匹配 `fat` 和 `mat`, 且其前跟着 `The` 或 `the`.
+
+
+"(?<=[T|t]he\s)(fat|mat)" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/avH165/1)
+
+### 4.4 `?
+"(?<![T|t]he\s)(cat)" => The cat sat on cat.
+
+
+[在线练习](https://regex101.com/r/8Efx5G/1)
+
+## 5. 标志
+
+标志也叫修饰语, 因为它可以用来修改表达式的搜索结果.
+这些标志可以任意的组合使用, 它也是整个正则表达式的一部分.
+
+|标志|描述|
+|:----:|----|
+|i|忽略大小写.|
+|g|全局搜索.|
+|m|多行的: 锚点元字符 `^` `$` 工作范围在每行的起始.|
+
+### 5.1 忽略大小写 (Case Insensitive)
+
+修饰语 `i` 用于忽略大小写.
+例如, 表达式 `/The/gi` 表示在全局搜索 `The`, 在后面的 `i` 将其条件修改为忽略大小写, 则变成搜索 `the` 和 `The`, `g` 表示全局搜索.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/dpQyf9/1)
+
+
+"/The/gi" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/ahfiuh/1)
+
+### 5.2 全局搜索 (Global search)
+
+修饰符 `g` 常用语执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部).
+例如, 表达式 `/.(at)/g` 表示搜索 任意字符(除了换行) + `at`, 并返回全部结果.
+
+
+"/.(at)/" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/jnk6gM/1)
+
+
+"/.(at)/g" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/dO1nef/1)
+
+### 5.3 多行修饰符 (Multiline)
+
+多行修饰符 `m` 常用语执行一个多行匹配.
+
+像之前介绍的 `(^,$)` 用于检查格式是否是在待检测字符串的开头或结尾. 但我们如果想要它在每行的开头和结尾生效, 我们需要用到多行修饰符 `m`.
+
+例如, 表达式 `/at(.)?$/gm` 表示在待检测字符串每行的末尾搜索 `at`后跟一个或多个 `.` 的字符串, 并返回全部结果.
+
+
+"/.at(.)?$/" => The fat
+ cat sat
+ on the mat.
+
+
+[在线练习](https://regex101.com/r/hoGMkP/1)
+
+
+"/.at(.)?$/gm" => The fat
+ cat sat
+ on the mat.
+
+
+[在线练习](https://regex101.com/r/E88WE2/1)
+
+## 额外补充
+
+* *正整数*: `^\d+$`
+* *负整数*: `^-\d+$`
+* *手机国家号*: `^+?[\d\s]{3,}$`
+* *手机号*: `^+?[\d\s]+(?[\d\s]{10,}$`
+* *整数*: `^-?\d+$`
+* *用户名*: `^[\w\d_.]{4,16}$`
+* *数字和英文字母*: `^[a-zA-Z0-9]*$`
+* *数字和应为字母和空格*: `^[a-zA-Z0-9 ]*$`
+* *密码*: `^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$`
+* *邮箱*: `^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$`
+* *IP4 地址*: `^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$`
+* *纯小写字母*: `^([a-z])*$`
+* *纯大写字母*: `^([A-Z])*$`
+* *URL*: `^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$`
+* *VISA 信用卡号*: `^(4[0-9]{12}(?:[0-9]{3})?)*$`
+* *日期 (MM/DD/YYYY)*: `^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$`
+* *日期 (YYYY/MM/DD)*: `^(19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])$`
+* *MasterCard 信用卡号*: `^(5[1-5][0-9]{14})*$`
+
+## 贡献
+
+* 报告问题
+* 开放合并请求
+* 传播此文档
+* 直接和我联系 ziishaned@gmail.com 或 [](https://twitter.com/ziishaned)
+
+## 许可证
+
+MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
diff --git a/README.md b/README.md
index 1a9ba3db..84cfc679 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,9 @@
-
+
-De la expresión regular anterior, se puede aceptar las cadenas 'john_doe', 'jo-hn_doe' y 'john12_as'. La expresión no coincide con el nombre de usuario 'Jo', porque es una cadena de caracteres que contiene letras mayúsculas y es demasiado corta.
+La expresión regular anterior puede aceptar las cadenas `john_doe`, `jo-hn_doe` y `john12_as`. Sin embargo, la expresión no coincide con el nombre de usuario `Jo` porque es una cadena de caracteres que contiene letras mayúsculas y es demasiado corta.
## Tabla de contenido
-- [Introducción](#1-introduccion)
-- [Meta caracteres](#2-meta-caracteres)
+- [Introducción](#1-introducción)
+- [Meta-caracteres](#2-meta-caracteres)
- [Full stop](#21-full-stop)
- [Conjunto de caracteres](#22-conjunto-de-caracteres)
- [Conjunto de caracteres negados](#221-conjunto-de-caracteres-negado)
- [Repeticiones](#23-repeticiones)
- - [Asterísco](#231-asterisco)
+ - [Asterisco](#231-asterisco)
- [Signo más](#232-signo-mas)
- - [Signo de pregunta](#233-signo-de-pregunta)
+ - [Signo de interrogación](#233-signo-de-pregunta)
- [Llaves](#24-llaves)
- [Grupo de caracteres](#25-grupo-de-caracteres)
- [Alternancia](#26-alternacia)
- [Caracteres especiales de escape](#27-caracteres-especiales-de-escape)
- [Anclas](#28-anclas)
- [Símbolo de intercalación](#281-simbolo-de-intercalacion)
- - [Símbolo dolar](#282-simbolo-dolar)
+ - [Símbolo del dólar](#282-simbolo-dolar)
- [Conjunto de caracteres abreviados](#3-conjunto-de-caracteres-abreviados)
- [Mirar alrededor](#4-mirar-alrededor)
- [Mirar hacia delante positivo](#41-mirar-hacia-delante-positivo)
- [Mirar hacia delante negativo](#41-mirar-hacia-delaten-negativo)
- [Mirar hacia atrás positivo](#41-mirar-hacia-atras-positivo)
- [Mirar hacia atrás negativo](#41-mirar-hacia-atras-negativo)
-- [Banderas](#5-banderas)
- - [mayúsculas y minúsculas](#51-mayusculas-y-minusculas)
+- [Indicadores](#5-indicadores)
+ - [Mayúsculas y minúsculas](#51-mayusculas-y-minusculas)
- [Búsqueda global](#52-busqueda-global)
- - [Multilinea](#53-multilinea)
-- [Bonus](#bonus)
+ - [Multilínea](#53-multilinea)
+
## 1. Introducción
-Una expresión regular es sólo un patrón de caracteres que utilizamos para realizar búsquedas en un texto. Por ejemplo, la expresión regular «the» significa: la letra `t` seguida de la letra `h` seguida de la letra `e`.
+Una expresión regular es sólo un patrón de caracteres que utilizamos para realizar búsquedas en un texto. Por ejemplo, la expresión regular `the` significa: la letra `t`, seguida de la letra `h`, seguida de la letra `e`.
"the" => The fat cat sat on the mat.
@@ -77,28 +78,28 @@ La expresión regular `123` coincide con la cadena `123`. La expresión regular
[Prueba la expresión regular](https://regex101.com/r/1paXsy/1)
-## 2. Meta caracteres
+## 2. Meta-caracteres
-Los caracteres meta son los bloques de construcción de las expresiones regulares. Los meta caracteres no se sostienen a sí mismos, sino que se interpretan de alguna manera especial. Algunos meta caracteres tienen un significado especial y se escriben entre corchetes. Los meta caracteres son los siguientes:
+Los meta-caracteres son los bloques de construcción de las expresiones regulares. Los meta-caracteres no se sostienen a sí mismos, sino que se interpretan de alguna manera especial. Algunos meta-caracteres tienen un significado especial y se escriben entre corchetes. Los meta-caracteres son los siguientes:
-|Meta character|Description|
+|Meta-carácter|Descripción|
|:----:|----|
-|.|Periodo. Coincide con cualquier caracter excepto un salto de línea.|
-|[ ]|Clase caracter. Coincide con cualquier caracter contenido entre corchetes.|
-|[^ ]|Clase caracter negado. Coincide con cualquier caracter que no está contenido dentro de los corchetes.|
+|.|Período. Coincide con cualquier carácter excepto un salto de línea.|
+|[ ]|Clase de caracteres. Coincide con cualquier carácter contenido entre corchetes.|
+|[^ ]|Clase de caracteres negados. Coincide con cualquier carácter que no está contenido dentro de los corchetes.|
|*|Corresponde con 0 o más repeticiones del símbolo precedente.|
|+|Corresponde con 1 o más repeticiones del símbolo precedente.|
|?|Hace que el símbolo precedente sea opcional.|
-|{n,m}|Llaves.Corresponde al menos "n" pero no más de "m" repeticiones del símbolo precedente.|
-|(xyz)|Grupo caracter. Hace coincidir los caracteres xyz en ese orden exacto.|
+|{n,m}|Llaves. Corresponde al menos "n" pero no más de "m" repeticiones del símbolo precedente.|
+|(xyz)|Grupo carácter. Hace coincidir los caracteres xyz en ese orden exacto.|
|||Alternancia. Corresponde a los caracteres anteriores o los caracteres después del símbolo.|
-|\|Escapa el siguiente caracter. Esto le permite hacer coincidir los caracteres reservados [ ] ( ) { } . * + ? ^ $ \ ||
+|\|Escapa el siguiente carácter. Esto le permite hacer coincidir los caracteres reservados [ ] ( ) { } . * + ? ^ $ \ ||
|^|Hace coincidir el principio de la entrada.|
|$|Corresponde al final de la entrada.|
## 2.1 Full stop
-Full stop `.` es el ejemplo más simple del meta-caracter. El caracter meta "." coincide con cualquier carácter. No coincidirá con el retorno o nuevos caracteres de línea. Por ejemplo, la expresión regular `.ar` significa: cualquier caracter, seguido de la letra`a`, seguido de la letra "r".
+Full stop `.` es el ejemplo más simple del meta-carácter. El meta-carácter `.` coincide con cualquier carácter. No coincidirá con el retorno o nuevos caracteres de línea. Por ejemplo, la expresión regular `.ar` significa: cualquier carácter, seguido del carácter `a`, seguido del carácter `r`.
".ar" => The car parked in the garage.
@@ -108,7 +109,7 @@ Full stop `.` es el ejemplo más simple del meta-caracter. El caracter meta "."
## 2.2 Conjunto de caracteres
-Los conjuntos de caracteres también se llaman clase de caracteres. Los corchetes se utilizan para especificar conjuntos de caracteres. Utilice un guión dentro de un conjunto de caracteres para especificar el rango de los caracteres. El orden del rango de caracteres dentro de corchetes no importa. Por ejemplo, la expresión regular "[Tt] he" significa: una letra mayúscula "T" o t, seguida de la letra "h" seguida de la letra "e"
+Los conjuntos de caracteres también se llaman clase de caracteres. Los corchetes se utilizan para especificar conjuntos de caracteres. Utilice un guión dentro de un conjunto de caracteres para especificar el rango de los caracteres. El orden del rango de caracteres dentro de corchetes no importa. Por ejemplo, la expresión regular `[Tt]he` significa: un carácter en mayúscula `T` o minúscula `t`, seguido del carácter `h`, seguido del carácter `e`.
"[Tt]he" => The car parked in the garage.
@@ -116,7 +117,7 @@ Los conjuntos de caracteres también se llaman clase de caracteres. Los corchete
[Prueba la expresión regular](https://regex101.com/r/2ITLQ4/1)
-Sin embargo, un período dentro de un conjunto de caracteres significa un período literal. La expresión regular `ar [.]` Significa: un carácter minúsculo `a`, seguido de la letra` r`, seguido de un carácter `.`.
+Sin embargo, un período dentro de un conjunto de caracteres significa un período literal. La expresión regular `ar[.]` significa: un carácter en minúscula `a`, seguido del carácter `r`, seguido del carácter `.`.
"ar[.]" => A garage is a good place to park a car.
@@ -126,7 +127,7 @@ Sin embargo, un período dentro de un conjunto de caracteres significa un perío
### 2.2.1 Conjunto de caracteres negados
-En general, el símbolo de intercalación representa el comienzo de la cadena, pero cuando se escribe después del corchete de apertura niega el conjunto de caracteres. Por ejemplo, la expresión regular `[^c] ar` significa: cualquier carácter, excepto `c`, seguido del carácter `a`, seguido de la letra `r`.
+En general, el símbolo de intercalación representa el comienzo de la cadena, pero cuando se escribe después del corchete de apertura niega el conjunto de caracteres. Por ejemplo, la expresión regular `[^c]ar` significa: cualquier carácter, excepto `c`, seguido del carácter `a`, seguido del carácter `r`.
"[^c]ar" => The car parked in the garage.
@@ -136,9 +137,9 @@ En general, el símbolo de intercalación representa el comienzo de la cadena, p
## 2.3 Repeticiones
-Siguiendo los caracteres meta +, * o ?, se utilizan para especificar cuántas veces puede producirse un subpatrón. Estos meta-caracteres actúan de manera diferente en diferentes situaciones.
+Los siguientes caracteres meta `+`, `*` o `?`, se utilizan para especificar cuántas veces puede producirse un subpatrón. Estos meta-caracteres actúan de manera diferente en diferentes situaciones.
-### 2.3.1 Asterísco
+### 2.3.1 Asterisco
El símbolo `*` coincide con cero o más repeticiones del marcador anterior. La expresión regular `a*` significa: cero o más repeticiones del carácter en minúscula precedente `a`. Pero si aparece después de un conjunto de caracteres o una clase, entonces encuentra las repeticiones de todo el conjunto de caracteres. Por ejemplo, la expresión regular `[a-z]*` significa: cualquier número de letras minúsculas en una fila.
@@ -148,7 +149,7 @@ El símbolo `*` coincide con cero o más repeticiones del marcador anterior. La
[Prueba la expresión regular](https://regex101.com/r/7m8me5/1)
-El símbolo `*` se puede utilizar con el meta-caracter `.` para que coincida con cualquier cadena de caracteres `.*`. El símbolo `*` se lo puede utilizar con el caracter de espacio en blanco `\s` para que coincida con una cadena de caracteres de espacio en blanco. Por ejemplo, la expresión "\s*cat\s*" significa: cero o más espacios, seguido por el carácter en minúscula `c`, seguido del carácter en minúscula `a`, seguido del carácter en minúscula `t`, seguido de cero o más espacios.
+El símbolo `*` se puede utilizar con el meta-carácter `.` para que coincida con cualquier cadena de caracteres `.*`. El símbolo `*` se puede utilizar con el carácter de espacio en blanco `\s` para que coincida con una cadena de caracteres de espacio en blanco. Por ejemplo, la expresión `\s*cat\s*` significa: cero o más espacios, seguido por el carácter en minúscula `c`, seguido del carácter en minúscula `a`, seguido del carácter en minúscula `t`, seguido de cero o más espacios.
"\s*cat\s*" => The fat cat sat on the concatenation.
@@ -158,7 +159,7 @@ El símbolo `*` se puede utilizar con el meta-caracter `.` para que coincida con
### 2.3.2 Signo más
-El símbolo `+` coincide con una o más repeticiones del carácter anterior. Por ejemplo, la expresión regular `c.+T` significa: letra en minúscula `c`, seguida por al menos uno del mismo carácter, luego el carácter en minúscula `t`.
+El símbolo `+` coincide con una o más repeticiones del carácter anterior. Por ejemplo, la expresión regular `c.+T` significa: carácter en minúscula `c`, seguido por lo menos de un carácter, luego el carácter en minúscula `t`.
"c.+t" => The fat cat sat on the mat.
@@ -166,9 +167,9 @@ El símbolo `+` coincide con una o más repeticiones del carácter anterior. Por
[Prueba la expresión regular](https://regex101.com/r/Dzf9Aa/1)
-### 2.3.3 Signo de pregunta
+### 2.3.3 Signo de interrogación
-En expresiones regulares el meta-caracter `?` hace que el caracter precedente sea opcional. Este símnbolo coincide con cero o una instancia del caracter precedente. Por ejemplo, la expresión regular `[T]?he` significa: El caracteropcional predecesor `T` seguido por la letra en minúscula `h`, seguido del caracter en minúscula `e`.
+En expresiones regulares el meta-carácter `?` hace que el carácter precedente sea opcional. Este símnbolo coincide con cero o una instancia del carácter precedente. Por ejemplo, la expresión regular `[T]?he` significa: El carácter opcional `T` seguido por el carácter en minúscula `h`, seguido del carácter en minúscula `e`.
"[T]he" => The car is parked in the garage.
@@ -184,7 +185,7 @@ En expresiones regulares el meta-caracter `?` hace que el caracter precedente se
## 2.4 Llaves
-En la expresión regular, las llaves que también se denominan cuantificadores se utilizan para especificar el número de veces que se puede repetir un carácter o un grupo de caracteres. Por ejemplo, la expresión regular `[0-9]{2,3}` significa: Combina al menos 2 dígitos pero no más de 3 (caracteres del rango de 0 a 9).
+En la expresión regular, las llaves, que también se denominan cuantificadores, son utilizados para especificar el número de veces que se puede repetir un carácter o un grupo de caracteres. Por ejemplo, la expresión regular `[0-9]{2,3}` significa: Combina al menos 2 dígitos pero no más de 3 (caracteres en el rango de 0 a 9).
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -208,7 +209,7 @@ Podemos dejar fuera el segundo número. Por ejemplo, la expresión regular `[0-9
## 2.5 Grupos de caracteres
-Grupo de caracteres es un grupo de sub-patrones que se escribe dentro de paréntesis `(...)`. Como hemos discutido antes en la expresión regular si ponemos un cuantificador después de un caracter, repetiremos el caracter anterior. Pero si ponemos cuantificador después de un grupo de caracteres, entonces repetimos todo el grupo de caracteres. Por ejemplo, la expresión regular `(ab)*` coincide con cero o más repeticiones del caracter "ab". También podemos usar el caracter de alternancia `|` meta dentro del grupo de caracteres. Por ejemplo, la expresión regular `(c|g|p)ar` significa: caracter en minúscula `c`, `g` o `p`, seguido del caracter `a`, seguido del caracter `r`.
+Un grupo de caracteres es un grupo de sub-patrones que se escribe dentro de paréntesis `(...)`. Como hemos discutido antes en la expresión regular, si ponemos un cuantificador después de un carácter, repetiremos el carácter anterior. Pero si ponemos un cuantificador después de un grupo de caracteres, entonces repetimos todo el grupo de caracteres. Por ejemplo, la expresión regular `(ab)*` coincide con cero o más repeticiones del caracter `ab`. También podemos usar el carácter de alternancia `|` meta dentro del grupo de caracteres. Por ejemplo, la expresión regular `(c|g|p)ar` significa: carácter en minúscula `c`, `g` o `p`, seguido del carácter `a`, seguido del carácter `r`.
"(c|g|p)ar" => The car is parked in the garage.
@@ -217,7 +218,7 @@ Grupo de caracteres es un grupo de sub-patrones que se escribe dentro de parént
## 2.6 Alternancia
-En la expresión regular se usa la barra vertical `|` para definir la alternancia. La alternancia es como una condición entre múltiples expresiones. Ahora, puedes estar pensando que el conjunto de caracteres y la alternancia funciona de la misma manera. Pero la gran diferencia entre el conjunto de caracteres y la alternancia es que el conjunto de caracteres funciona a nivel de caracter pero la alternancia funciona a nivel de expresión. Por ejemplo, la expresión regular `(T|t)he|car` significa: el carcter en mayúscula `T` o en minúscula `t`, seguido del caracter en minúscula `h`, seguido del caracter en minúscula `e` o del caracter en minúscula `c`, seguido de un caracter en minúscula `a`, seguido del carácter en minúscula `r`.
+En la expresión regular, la barra vertical `|` se utiliza para definir la alternancia. La alternancia es como una condición entre múltiples expresiones. Ahora, puedes estar pensando que el conjunto de caracteres y la alternancia funciona de la misma manera. Sin embargo, la gran diferencia entre el conjunto de caracteres y la alternancia es que el conjunto de caracteres funciona a nivel de carácter pero la alternancia funciona a nivel de expresión. Por ejemplo, la expresión regular `(T|t)he|car` significa: el carácter en mayúscula `T` o en minúscula `t`, seguido del carácter en minúscula `h`, seguido del carácter en minúscula `e` o del carácter en minúscula `c`, seguido de un carácter en minúscula `a`, seguido del carácter en minúscula `r`.
"(T|t)he|car" => The car is parked in the garage.
@@ -227,7 +228,9 @@ En la expresión regular se usa la barra vertical `|` para definir la alternanci
## 2.7 Caracteres especiales de escape
-La barra invertida `\` se utiliza en la expresión regular para escapar del carácter siguiente. Esto permite especificar un símbolo como un caracter coincidente incluyendo caracteres reservados `{}[]/\+*.^|?`. Por ejemplo, la expresión regular `.` se utiliza para coincidir con cualquier caracter, excepto la nueva línea. Ahora, para emparejar `.` en una cadena de entrada, la expresión regular `(f|c|m)at\.?` significa: la letra minúscula `f`, `c` o `m`, seguida del caracter en minúscula `a`, seguido de la letra minúscula `t`, seguida del caracter opcional `.`.
+La barra invertida `\` se utiliza en la expresión regular para escapar el carácter siguiente. Esto permite especificar un símbolo como un carácter coincidente incluyendo caracteres reservados `{}[]/\+*.^|?`. Para usar un carácter especial como un carácter coincidente, agrega `\` a su izquierda.
+
+Por ejemplo, la expresión regular `.` se utiliza para coincidir con cualquier carácter, excepto la nueva línea. Ahora, para emparejar `.` en una cadena de entrada, la expresión regular `(f|c|m)at\.?` significa: el carácter en minúscula `f`, `c` o `m`, seguido del carácter en minúscula `a`, seguido del carácter en minúscula `t`, seguido del carácter opcional `.`.
"(f|c|m)at\.?" => The fat cat sat on the mat.
@@ -237,11 +240,11 @@ La barra invertida `\` se utiliza en la expresión regular para escapar del car
## 2.8 Anclas
-En expresiones regulares, usamos anclas para comprobar si el símbolo de coincidencia es el símbolo inicial o el símbolo final de la cadena de entrada. Los anclajes son de dos tipos: El primer tipo es el símbolo `^` que comprueba si el caracter coincidente es el caracter inicial de la entrada y el segundo tipo es Dollar `$` que comprueba si el caracter coincidente es el último caracter de la cadena de entrada.
+En expresiones regulares, usamos anclas para comprobar si el símbolo coincidente es el símbolo inicial o el símbolo final de la cadena de entrada. Los anclajes son de dos tipos: El primer tipo es el símbolo de intercalación `^` que comprueba si el carácter coincidente es el carácter inicial de la entrada y el segundo tipo es el símbolo del dólar `$` que comprueba si el carácter coincidente es el último carácter de la cadena de entrada.
-### 2.8.1 Simbolo de intercalación
+### 2.8.1 Símbolo de intercalación
-El símbolo de intercalación `^` se usa para verificar si el caracter coincidente es el primer caracter de la cadena de entrada. Si aplicamos la siguiente expresión regular `^a` (si a es el símbolo inicial) a la cadena de entrada `abc` coincide con `a`. Pero si aplicamos la expresión regular `^b` en la cadena de entrada anterior, no coincide con nada. Porque en la cadena de entrada `abc` "b" no es el símbolo inicial. Vamos a echar un vistazo a otra expresión regular `^(T|t)he`, significa: mayúsculas `T` o la letra minúscula `t` es el símbolo inicial de la cadena de entrada, seguido del caracter minúscula `h` y seguido del caracter en minúscula `e`.
+El símbolo de intercalación `^` se usa para verificar si el carácter coincidente es el primer carácter de la cadena de entrada. Si aplicamos la siguiente expresión regular `^a` (si `a` es el símbolo inicial) a la cadena de entrada, `abc` coincide con `a`. Pero si aplicamos la expresión regular `^b` en la cadena de entrada anterior, no coincide con nada. Porque en la cadena de entrada `abc`, `b` no es el símbolo inicial. Vamos a echar un vistazo a la expresión regular `^(T|t)he` que significa: carácter en mayúscula `T` o carácter en minúscula `t` es el símbolo inicial de la cadena de entrada, seguido del carácter minúscula `h` y seguido del carácter en minúscula `e`.
"(T|t)he" => The car is parked in the garage.
@@ -255,9 +258,9 @@ El símbolo de intercalación `^` se usa para verificar si el caracter coinciden
[Prueba la expresión regular](https://regex101.com/r/jXrKne/1)
-### 2.8.2 Símbolo dolar
+### 2.8.2 Símbolo del dólar
-El símbolo de dólar `$` se utiliza para comprobar si el caracter coincidente es el último carácter de la cadena de entrada. Por ejemplo, la expresión regular `(at\.)$` significa: un caracter en minúscula `a`, seguido del caracter en minúscula `t` seguido de un carácter `.` y el marcador debe ser el final de la cadena.
+El símbolo del dólar `$` se utiliza para comprobar si el carácter coincidente es el último carácter de la cadena de entrada. Por ejemplo, la expresión regular `(at\.)$` significa: un carácter en minúscula `a`, seguido del carácter en minúscula `t`, seguido de un carácter `.` y el marcador debe ser el final de la cadena.
"(at\.)" => The fat cat. sat. on the mat.
@@ -277,9 +280,9 @@ La expresión regular proporciona abreviaturas para los conjuntos de caracteres
comúnmente utilizados, que ofrecen abreviaturas convenientes para expresiones
regulares de uso común. Los conjuntos de caracteres abreviados son los siguientes:
-|Shorthand|Description|
+|Abreviatura|Descripción|
|:----:|----|
-|.|Cualquier caracter excepto la nueva línea|
+|.|Cualquier carácter excepto nueva línea|
|\w|Coincide con los caracteres alfanuméricos: `[a-zA-Z0-9_]`|
|\W|Coincide con los caracteres no alfanuméricos: `[^\w]`|
|\d|Coincide con dígitos: `[0-9]`|
@@ -289,9 +292,9 @@ regulares de uso común. Los conjuntos de caracteres abreviados son los siguient
## 4. Mirar alrededor
-Mirar hacia delante (lookaheds) y mirar hacia atrás (Lookbehind) a veces conocidos
-como lookaround son tipo específico de ***grupo que no captura*** (Utilice para
-coincidir con el patrón pero no se incluye en la lista correspondiente). Los
+Mirar hacia delante (lookahead) y mirar hacia atrás (lookbehind), a veces conocidos
+como lookaround, son tipo específico de **grupo que no captura** (Utilizados para
+coincidir con el patrón pero no se incluyen en la lista correspondiente). Los
lookaheads se usan cuando tenemos la condición de que este patrón es precedido o
seguido por otro patrón determinado. Por ejemplo, queremos obtener todos los números
que están precedidos por el carácter `$` de la siguiente cadena de entrada
@@ -300,25 +303,25 @@ esto significa: obtener todos los números que contienen el carácter `.` y
están precedidos del carácter `$`. A continuación se muestran los lookarounds
que se utilizan en expresiones regulares:
-|Symbol|Description|
+|Símbolo|Descripción|
|:----:|----|
-|?=|Positive Lookahead|
-|?!|Negative Lookahead|
-|?<=|Positive Lookbehind|
-|?
"[T|t]he(?=\sfat)" => The fat cat sat on the mat.
@@ -331,9 +334,9 @@ de expresión regular que coincida con `The` o` the` seguido de la palabra `fat`
El lookahead negativo se usa cuando necesitamos obtener todas las coincidencias
de la cadena de entrada que no son seguidas por un patrón. El aspecto negativo se
define de la misma manera que definimos el aspecto positivo, pero la única diferencia
-es que en lugar del caracter igual `=` utilizamos la negción `!` , es decir,
+es que en lugar del carácter igual `=` utilizamos carácter negación `!` , es decir,
`(?! ...)`. Vamos a echar un vistazo a la siguiente expresión regular `[T|t]he(?!\Sfat)`
-que significa: obtener todas las `The` o `the` seguidos por la palabra `fat` precedido por un carácter de espacio.
+que significa: obtener todas las `The` o `the` seguidos por la palabra `fat` precedido por un carácter de espacio.
@@ -345,7 +348,7 @@ que significa: obtener todas las `The` o `the` seguidos por la palabra `fat` pr
### 4.3 Mirar hacia atras positiva
Positivo lookbehind se utiliza para obtener todos los caracteres que están precedidos
-por un patrón específico. La apariencia positiva se denomina `(?<=...)`.
+por un patrón específico. La apariencia positiva se denotar por `(?<=...)`.
Por ejemplo, la expresión regular `(? <= [T|t]he\s)(fat|mat)` significa: obtener todas las palabras
`fat` o `mat` de la cadena de entrada después de la palabra `The` o `the`.
@@ -369,26 +372,26 @@ la palabra` The` o `the`.
[Prueba la expresión regular](https://regex101.com/r/8Efx5G/1)
-## 5. Banderas
+## 5. Indicadores
Los indicadores también se llaman modificadores porque modifican la salida
de una expresión regular. Estos indicadores se pueden utilizar en cualquier orden
o combinación, y son una parte integral de RegExp.
-|Bandera|Descripción|
+|Indicador|Descripción|
|:----:|----|
-|i|Insensible a mayúsculas y minúsculas: ajusta la coincidencia para que no distinga mayúsculas y minúsculas.|
-|g|Búsqueda global: busque un patrón en toda la cadena de entrada.|
-|m|Multilinea: Ancla meta caracter trabaja en cada linea.|
+|i|Insensible a mayúsculas y minúsculas: Ajusta la coincidencia para que no distinga mayúsculas y minúsculas.|
+|g|Búsqueda global: Busca un patrón en toda la cadena de entrada.|
+|m|Multilínea: Ancla meta carácter trabaja en cada línea.|
### 5.1 Mayúscula y minúscula
El modificador `i` se utiliza para realizar la coincidencia entre mayúsculas y
-minúsculas. Por ejemplo, la expresión regular `/The/gi` significa: letra mayúscula
-`T`, seguido del caracter en minúscula `h`, seguido del carácter `e`. Y al final
+minúsculas. Por ejemplo, la expresión regular `/The/gi` significa: carácter en mayúscula
+`T`, seguido del carácter en minúscula `h`, seguido del carácter `e`. Y al final
de la expresión regular, el indicador `i` indica al motor de expresiones
-regulares que ignore el caso. Como puede ver, también ofrecemos el indicador
+regulares que ignore el caso. Como puede ver, también proveimos el indicador
`g` porque queremos buscar el patrón en toda la cadena de entrada.
@@ -409,9 +412,10 @@ regulares que ignore el caso. Como puede ver, también ofrecemos el indicador
El modificador `g` se utiliza para realizar una coincidencia global
(encontrar todos las coincidencias en lugar de detenerse después de la primera coincidencia).
Por ejemplo, la expresión regular `/.(At)/g` significa: cualquier carácter,
-excepto la nueva línea, seguido del caracter minúsculo `a`, seguido del caracter
-en minúscula `t`. Debido a que siempre `g` prevee la bandera al final de la expresión
-regular ahora encontrará todas las coincidencias de toda la cadena de entrada.
+excepto la nueva línea, seguido del carácter en minúscula `a`, seguido del carácter
+en minúscula `t`. Debido a que proveimos el indicador `g` al final de la expresión
+regular, ahora encontrará todas las coincidencias de toda la cadena de entrada, no sólo la
+primera instancia (el cual es el comportamiento normal).
@@ -426,15 +430,14 @@ regular ahora encontrará todas las coincidencias de toda la cadena de entrada.
[Prueba la expresión regular](https://regex101.com/r/dO1nef/1)
-### 5.3 Multilinea
+### 5.3 Multilínea
El modificador `m` se utiliza para realizar una coincidencia de varias líneas.
Como analizamos anteriormente, las anclas `(^,$)` se utilizan para comprobar si
el patrón es el comienzo de la entrada o el final de la cadena de entrada. Pero
-si queremos que las anclas funcionen en cada línea usamos la bandera `m`.
-Por ejemplo, la expresión regular `/at(.)?$/Gm`
-significa: caracter en minúscula` a`, seguido del caracter minúsculo `t`,
-opcionalmente cualquier cosa menos la nueva línea. Y debido a `m` bandera ahora
+si queremos que las anclas funcionen en cada línea usamos el indicador `m`.
+Por ejemplo, la expresión regular `/at(.)?$/Gm` significa: carácter en minúscula `a`, seguido del carácter en minúscula `t`,
+opcionalmente cualquier cosa menos la nueva línea. Y debido al indicador `m`, ahora
el motor de expresión regular coincide con el patrón al final de cada línea de una cadena.
@@ -453,13 +456,13 @@ el motor de expresión regular coincide con el patrón al final de cada línea d
[Prueba la expresión regular](https://regex101.com/r/E88WE2/1)
-## Contribution
+## Contribución
-* Report issues
-* Open pull request with improvements
-* Spread the word
-* Reach out to me directly at ziishaned@gmail.com or [](https://twitter.com/ziishaned)
+* Reporta un problema
+* Abre un pull request con mejoras
+* Pasa la palabra
+* Contáctame directamente a ziishaned@gmail.com o [](https://twitter.com/ziishaned)
-## License
+## Licencia
MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
From 7b00db73fc8b0bdafcf129ab15428f7acb34d485 Mon Sep 17 00:00:00 2001
From: Caleb Mazalevskis
Date: Wed, 18 Oct 2017 13:32:47 +0800
Subject: [PATCH 006/162] Patch.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Sync language list (all translations).
- Sync some punctuation (Chinese ",.:?" -> ",。:?" and Japanese "," ->
"、").
- Sync some spacing (various translations).
- One missing translation (Chinese).
- (PR is NOT a complete audit or proofreading).
---
README-cn.md | 233 ++++++++++++++++++++++++------------------------
README-es.md | 5 +-
README-fr.md | 3 +-
README-gr.md | 2 +-
README-ja.md | 29 +++---
README-ko.md | 3 +-
README-pt_BR.md | 3 +-
README-tr.md | 15 ++--
README.md | 2 +-
9 files changed, 151 insertions(+), 144 deletions(-)
diff --git a/README-cn.md b/README-cn.md
index add4168c..de8d14f9 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -3,36 +3,37 @@
-## 翻译:
+## 翻译:
* [English](README.md)
* [Español](README-es.md)
* [Français](README-fr.md)
-* [中文版](README-cn.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
-## 什么是正则表达式?
+## 什么是正则表达式?
-> 正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子.
+> 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。
-一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式.
-"Regular expression"这个词比较拗口, 我们常使用缩写的术语"regex"或"regexp".
-正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等.
+一个正则表达式是在一个主体字符串中从左到右匹配字符串时的一种样式。
+“Regular expression”这个词比较拗口,我们常使用缩写的术语“regex”或“regexp”。
+正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等。
-想象你正在写一个应用, 然后你想设定一个用户命名的规则, 让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑.
-我们使用以下正则表达式来验证一个用户名:
+想象你正在写一个应用,然后你想设定一个用户命名的规则,让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑。
+我们使用以下正则表达式来验证一个用户名:
-以上的正则表达式可以接受 `john_doe`, `jo-hn_doe`, `john12_as`.
-但不匹配`Jo`, 因为它包含了大写的字母而且太短了.
+以上的正则表达式可以接受 `john_doe`、`jo-hn_doe`、`john12_as`。
+但不匹配`Jo`,因为它包含了大写的字母而且太短了。
目录
=================
@@ -69,8 +70,8 @@
## 1. 基本匹配
-正则表达式其实就是在执行搜索时的格式, 它由一些字母和数字组合而成.
-例如: 一个正则表达式 `the`, 它表示一个规则: 由字母`t`开始,接着是`h`,再接着是`e`.
+正则表达式其实就是在执行搜索时的格式,它由一些字母和数字组合而成。
+例如:一个正则表达式 `the`,它表示一个规则:由字母`t`开始,接着是`h`,再接着是`e`。
"the" => The fat cat sat on the mat.
@@ -78,9 +79,9 @@
[在线练习](https://regex101.com/r/dmRygT/1)
-正则表达式`123`匹配字符串`123`. 它逐个字符的与输入的正则表达式做比较.
+正则表达式`123`匹配字符串`123`. 它逐个字符的与输入的正则表达式做比较。
-正则表达式是大小写敏感的, 所以`The`不会匹配`the`.
+正则表达式是大小写敏感的,所以`The`不会匹配`the`。
"The" => The fat cat sat on the mat.
@@ -90,29 +91,29 @@
## 2. 元字符
-正则表达式主要依赖于元字符.
-元字符不代表他们本身的字面意思, 他们都有特殊的含义. 一些元字符写在方括号中的时候有一些特殊的意思. 以下是一些元字符的介绍:
+正则表达式主要依赖于元字符。
+元字符不代表他们本身的字面意思,他们都有特殊的含义。一些元字符写在方括号中的时候有一些特殊的意思. 以下是一些元字符的介绍:
|元字符|描述|
|:----:|----|
-|.|句号匹配任意单个字符除了换行符.|
-|[ ]|字符种类. 匹配方括号内的任意字符.|
-|[^ ]|否定的字符种类. 匹配除了方括号里的任意字符|
-|*|匹配>=0个重复的在*号之前的字符.|
-|+|匹配>=1个重复的+号前的字符.
-|?|标记?之前的字符为可选.|
-|{n,m}|匹配num个大括号之前的字符 (n <= num <= m).|
-|(xyz)|字符集, 匹配与 xyz 完全相等的字符串.|
-|||或运算符,匹配符号前或后的字符.|
-|\|转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ ||
-|^|从开始行开始匹配.|
-|$|从末端开始匹配.|
+|.|句号匹配任意单个字符除了换行符。|
+|[ ]|字符种类. 匹配方括号内的任意字符。|
+|[^ ]|否定的字符种类。匹配除了方括号里的任意字符。|
+|*|匹配>=0个重复的在*号之前的字符。|
+|+|匹配>=1个重复的+号前的字符。|
+|?|标记?之前的字符为可选。|
+|{n,m}|匹配num个大括号之前的字符 (n <= num <= m)。|
+|(xyz)|字符集,匹配与 xyz 完全相等的字符串。|
+|||或运算符,匹配符号前或后的字符。|
+|\|转义字符,用于匹配一些保留的字符 [ ] ( ) { } . * + ? ^ $ \ ||
+|^|从开始行开始匹配。|
+|$|从末端开始匹配。|
## 2.1 点运算符 `.`
-`.`是元字符中最简单的例子.
-`.`匹配任意单个字符, 但不匹配换行符.
-例如, 表达式`.ar`匹配一个任意字符后面跟着是`a`和`r`的字符串.
+`.`是元字符中最简单的例子。
+`.`匹配任意单个字符,但不匹配换行符。
+例如,表达式`.ar`匹配一个任意字符后面跟着是`a`和`r`的字符串。
".ar" => The car parked in the garage.
@@ -122,11 +123,11 @@
## 2.2 字符集
-字符集也叫做字符类.
-方括号用来指定一个字符集.
-在方括号中使用连字符来指定字符集的范围.
-在方括号中的字符集不关心顺序.
-例如, 表达式`[Tt]he` 匹配 `the` 和 `The`.
+字符集也叫做字符类。
+方括号用来指定一个字符集。
+在方括号中使用连字符来指定字符集的范围。
+在方括号中的字符集不关心顺序。
+例如,表达式`[Tt]he` 匹配 `the` 和 `The`。
"[Tt]he" => The car parked in the garage.
@@ -134,8 +135,8 @@
[在线练习](https://regex101.com/r/2ITLQ4/1)
-方括号的句号就表示句号.
-表达式 `ar[.]` 匹配 `ar.`字符串
+方括号的句号就表示句号。
+表达式 `ar[.]` 匹配 `ar.`字符串。
"ar[.]" => A garage is a good place to park a car.
@@ -145,8 +146,8 @@
### 2.2.1 否定字符集
-一般来说 `^` 表示一个字符串的开头, 但它用在一个方括号的开头的时候, 它表示这个字符集是否定的.
-例如, 表达式`[^c]ar` 匹配一个后面跟着`ar`的除了`c`的任意字符.
+一般来说 `^` 表示一个字符串的开头,但它用在一个方括号的开头的时候,它表示这个字符集是否定的。
+例如,表达式`[^c]ar` 匹配一个后面跟着`ar`的除了`c`的任意字符。
"[^c]ar" => The car parked in the garage.
@@ -156,13 +157,13 @@
## 2.3 重复次数
-后面跟着元字符 `+`, `*` or `?` 的, 用来指定匹配子模式的次数.
-这些元字符在不同的情况下有着不同的意思.
+后面跟着元字符 `+`,`*`或`?`的,用来指定匹配子模式的次数。
+这些元字符在不同的情况下有着不同的意思。
### 2.3.1 `*` 号
-`*`号匹配 在`*`之前的字符出现`大于等于0`次.
-例如, 表达式 `a*` 匹配以0或更多个a开头的字符, 因为有0个这个条件, 其实也就匹配了所有的字符. 表达式`[a-z]*` 匹配一个行中所有以小写字母开头的字符串.
+`*`号匹配 在`*`之前的字符出现`大于等于0`次。
+例如,表达式 `a*` 匹配以0或更多个a开头的字符,因为有0个这个条件,其实也就匹配了所有的字符. 表达式`[a-z]*` 匹配一个行中所有以小写字母开头的字符串。
"[a-z]*" => The car parked in the garage #21.
@@ -170,8 +171,8 @@
[在线练习](https://regex101.com/r/7m8me5/1)
-`*`字符和`.`字符搭配可以匹配所有的字符`.*`.
-`*`和表示匹配空格的符号`\s`连起来用, 如表达式`\s*cat\s*`匹配0或更多个空格开头和0或更多个空格结尾的cat字符串.
+`*`字符和`.`字符搭配可以匹配所有的字符`.*`。
+`*`和表示匹配空格的符号`\s`连起来用,如表达式`\s*cat\s*`匹配0或更多个空格开头和0或更多个空格结尾的cat字符串。
"\s*cat\s*" => The fat cat sat on the concatenation.
@@ -181,8 +182,8 @@
### 2.3.2 `+` 号
-`+`号匹配`+`号之前的字符出现 >=1 次.
-例如表达式`c.+t` 匹配以首字母`c`开头以`t`结尾,中间跟着任意个字符的字符串.
+`+`号匹配`+`号之前的字符出现 >=1 次。
+例如表达式`c.+t` 匹配以首字母`c`开头以`t`结尾,中间跟着任意个字符的字符串。
"c.+t" => The fat cat sat on the mat.
@@ -192,8 +193,8 @@
### 2.3.3 `?` 号
-在正则表达式中元字符 `?` 标记在符号前面的字符为可选, 即出现 0 或 1 次.
-例如, 表达式 `[T]?he` 匹配字符串 `he` 和 `The`.
+在正则表达式中元字符 `?` 标记在符号前面的字符为可选,即出现 `0` 或 `1` 次。
+例如,表达式 `[T]?he` 匹配字符串 `he` 和 `The`。
"[T]he" => The car is parked in the garage.
@@ -209,8 +210,8 @@
## 2.4 `{}` 号
-在正则表达式中 `{}` 是一个量词, 常用来一个或一组字符可以重复出现的次数.
-例如, 表达式 `[0-9]{2,3}` 匹配最少 2 位最多 3 位 0~9 的数字.
+在正则表达式中 `{}` 是一个量词,常用来一个或一组字符可以重复出现的次数。
+例如,表达式 `[0-9]{2,3}` 匹配最少 2 位最多 3 位 0~9 的数字。
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -218,11 +219,11 @@
[在线练习](https://regex101.com/r/juM86s/1)
-我们可以省略第二个参数.
-例如, `[0-9]{2,}` 匹配至少两位 0~9 的数字.
+我们可以省略第二个参数。
+例如, `[0-9]{2,}` 匹配至少两位 0~9 的数字。
-如果逗号也省略掉则表示重复固定的次数.
-例如, `[0-9]{3}` 匹配3位数字
+如果逗号也省略掉则表示重复固定的次数。
+例如, `[0-9]{3}` 匹配3位数字。
"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -238,9 +239,9 @@
## 2.5 `(...)` 特征标群
-特征标群是一组写在 `(...)` 中的子模式. 例如之前说的 `{}` 是用来表示前面一个字符出现指定次数. 但如果在 `{}` 前加入特征标群则表示整个标群内的字符重复 N 次. 例如, 表达式 `(ab)*` 匹配连续出现 0 或更多个 `ab`.
+特征标群是一组写在 `(...)` 中的子模式. 例如之前说的 `{}` 是用来表示前面一个字符出现指定次数. 但如果在 `{}` 前加入特征标群则表示整个标群内的字符重复 N 次. 例如,表达式 `(ab)*` 匹配连续出现 0 或更多个 `ab`。
-我们还可以在 `()` 中用或字符 `|` 表示或. 例如, `(c|g|p)ar` 匹配 `car` 或 `gar` 或 `par`.
+我们还可以在 `()` 中用或字符 `|` 表示或。 例如, `(c|g|p)ar` 匹配 `car` 或 `gar` 或 `par`。
"(c|g|p)ar" => The car is parked in the garage.
@@ -250,9 +251,9 @@
## 2.6 `|` 或运算符
-或运算符就表示或, 用作判断条件.
+或运算符就表示或,用作判断条件。
-例如 `(T|t)he|car` 匹配 `(T|t)he` 或 `car`.
+例如 `(T|t)he|car` 匹配 `(T|t)he` 或 `car`。
"(T|t)he|car" => The car is parked in the garage.
@@ -262,9 +263,9 @@
## 2.7 转码特殊字符
-反斜线 `\` 在表达式中用于转码紧跟其后的字符. 用于指定 `{ } [ ] / \ + * . $ ^ | ?` 这些特殊字符. 如果想要匹配这些特殊字符则要在其前面加上反斜线 `\`.
+反斜线 `\` 在表达式中用于转码紧跟其后的字符。用于指定 `{ } [ ] / \ + * . $ ^ | ?` 这些特殊字符. 如果想要匹配这些特殊字符则要在其前面加上反斜线 `\`。
-例如 `.` 是用来匹配除换行符外的所有字符的. 如果想要匹配句子中的 `.` 则要写成 `\.` 以下这个例子 `\.?`是选择性匹配`.`
+例如 `.` 是用来匹配除换行符外的所有字符的。如果想要匹配句子中的 `.` 则要写成 `\.` 以下这个例子 `\.?`是选择性匹配`.`。
"(f|c|m)at\.?" => The fat cat sat on the mat.
@@ -274,15 +275,15 @@
## 2.8 锚点
-在正则表达式中, 想要匹配指定开头或结尾的字符串就要使用到锚点. `^` 指定开头, `$` 指定结尾.
+在正则表达式中,想要匹配指定开头或结尾的字符串就要使用到锚点。 `^` 指定开头, `$` 指定结尾。
### 2.8.1 `^` 号
-`^` 用来检查匹配的字符串是否在所匹配字符串的开头.
+`^` 用来检查匹配的字符串是否在所匹配字符串的开头。
-例如, 在 `abc` 中使用表达式 `^a` 会得到结果 `a`. 但如果使用 `^b` 将匹配不到任何结果. 因为在字符串 `abc` 中并不是以 `b` 开头.
+例如,在 `abc` 中使用表达式 `^a` 会得到结果 `a`. 但如果使用 `^b` 将匹配不到任何结果. 因为在字符串 `abc` 中并不是以 `b` 开头。
-例如, `^(T|t)he` 匹配以 `The` 或 `the` 开头的字符串.
+例如, `^(T|t)he` 匹配以 `The` 或 `the` 开头的字符串。
"(T|t)he" => The car is parked in the garage.
@@ -298,9 +299,9 @@
### 2.8.2 `$` 号
-同理于 `^` 号, `$` 号用来匹配字符是否是最后一个.
+同理于 `^` 号, `$` 号用来匹配字符是否是最后一个。
-例如, `(at\.)$` 匹配以 `at.` 结尾的字符串.
+例如, `(at\.)$` 匹配以 `at.` 结尾的字符串。
"(at\.)" => The fat cat. sat. on the mat.
@@ -316,50 +317,50 @@
## 3. 简写字符集
-正则表达式提供一些常用的字符集简写. 如下:
+正则表达式提供一些常用的字符集简写. 如下:
|简写|描述|
|:----:|----|
-|.|除换行符外的所有字符|
-|\w|匹配所有字母数字, 等同于 `[a-zA-Z0-9_]`|
-|\W|匹配所有非字母数字, 即符号, 等同于: `[^\w]`|
-|\d|匹配数字: `[0-9]`|
-|\D|匹配非数字: `[^\d]`|
-|\s|匹配所有空格字符, 等同于: `[\t\n\f\r\p{Z}]`|
-|\S|匹配所有非空格字符: `[^\s]`|
-|\f|匹配一个换页符|
-|\n|匹配一个换行符|
-|\r|匹配一个回车符|
-|\t|匹配一个制表符|
-|\v|匹配一个垂直制表符|
-|\p|匹配 CR/LF (等同于 `\r\n`),用来匹配 DOS 行终止符|
+|.|除换行符外的所有字符。|
+|\w|匹配所有字母数字,等同于 `[a-zA-Z0-9_]`。|
+|\W|匹配所有非字母数字,即符号,等同于: `[^\w]`。|
+|\d|匹配数字: `[0-9]`。|
+|\D|匹配非数字: `[^\d]`。|
+|\s|匹配所有空格字符,等同于: `[\t\n\f\r\p{Z}]`。|
+|\S|匹配所有非空格字符: `[^\s]`。|
+|\f|匹配一个换页符。|
+|\n|匹配一个换行符。|
+|\r|匹配一个回车符。|
+|\t|匹配一个制表符。|
+|\v|匹配一个垂直制表符。|
+|\p|匹配 CR/LF (等同于 `\r\n`),用来匹配 DOS 行终止符。|
## 4. 前后关联约束(前后预查)
-前置约束和后置约束都属于**非捕获簇**(用于匹配不在匹配列表中的格式).
-前置约束用于判断所匹配的格式是否在另一个确定的格式之后.
+前置约束和后置约束都属于**非捕获簇**(用于匹配不在匹配列表中的格式)。
+前置约束用于判断所匹配的格式是否在另一个确定的格式之后。
-例如, 我们想要获得所有跟在 `$` 符号后的数字, 我们可以使用正向向后约束 `(?<=\$)[0-9\.]*`.
-这个表达式匹配 `$` 开头, 之后跟着 `0,1,2,3,4,5,6,7,8,9,.` 这些字符可以出现大于等于 0 次.
+例如,我们想要获得所有跟在 `$` 符号后的数字,我们可以使用正向向后约束 `(?<=\$)[0-9\.]*`。
+这个表达式匹配 `$` 开头,之后跟着 `0,1,2,3,4,5,6,7,8,9,.` 这些字符可以出现大于等于 0 次。
-前后关联约束如下:
+前后关联约束如下:
|符号|描述|
|:----:|----|
-|?=|前置约束-存在|
-|?!|前置约束-排除|
-|?<=|后置约束-存在|
-|?
"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
@@ -369,10 +370,10 @@
### 4.2 `?!...` 前置约束-排除
-前置约束-排除 `?!` 用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式
-`前置约束-排除` 定义和 `前置约束(存在)` 一样, 区别就是 `=` 替换成 `!` 也就是 `(?!...)`.
+前置约束-排除 `?!` 用于筛选所有匹配结果,筛选条件为 其后不跟随着定义的格式。
+`前置约束-排除` 定义和 `前置约束(存在)` 一样,区别就是 `=` 替换成 `!` 也就是 `(?!...)`。
-表达式 `(T|t)he(?!\sfat)` 匹配 `The` 和 `the`, 且其后不跟着 `(空格)fat`.
+表达式 `(T|t)he(?!\sfat)` 匹配 `The` 和 `the`,且其后不跟着 `fat`。
"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
@@ -382,8 +383,8 @@
### 4.3 `?<= ...` 后置约束-存在
-后置约束-存在 记作`(?<=...)` 用于筛选所有匹配结果, 筛选条件为 其前跟随着定义的格式.
-例如, 表达式 `(?<=(T|t)he\s)(fat|mat)` 匹配 `fat` 和 `mat`, 且其前跟着 `The` 或 `the`.
+后置约束-存在 记作`(?<=...)` 用于筛选所有匹配结果,筛选条件为 其前跟随着定义的格式。
+例如,表达式 `(?<=(T|t)he\s)(fat|mat)` 匹配 `fat` 和 `mat`,且其前跟着 `The` 或 `the`。
"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
@@ -393,8 +394,8 @@
### 4.4 `?
"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
@@ -404,19 +405,19 @@
## 5. 标志
-标志也叫修饰语, 因为它可以用来修改表达式的搜索结果.
-这些标志可以任意的组合使用, 它也是整个正则表达式的一部分.
+标志也叫修饰语,因为它可以用来修改表达式的搜索结果。
+这些标志可以任意的组合使用,它也是整个正则表达式的一部分。
|标志|描述|
|:----:|----|
-|i|忽略大小写.|
-|g|全局搜索.|
-|m|多行的: 锚点元字符 `^` `$` 工作范围在每行的起始.|
+|i|忽略大小写。|
+|g|全局搜索。|
+|m|多行的: 锚点元字符 `^` `$` 工作范围在每行的起始。|
### 5.1 忽略大小写 (Case Insensitive)
-修饰语 `i` 用于忽略大小写.
-例如, 表达式 `/The/gi` 表示在全局搜索 `The`, 在后面的 `i` 将其条件修改为忽略大小写, 则变成搜索 `the` 和 `The`, `g` 表示全局搜索.
+修饰语 `i` 用于忽略大小写。
+例如,表达式 `/The/gi` 表示在全局搜索 `The`,在后面的 `i` 将其条件修改为忽略大小写,则变成搜索 `the` 和 `The`, `g` 表示全局搜索。
"The" => The fat cat sat on the mat.
@@ -432,8 +433,8 @@
### 5.2 全局搜索 (Global search)
-修饰符 `g` 常用语执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部).
-例如, 表达式 `/.(at)/g` 表示搜索 任意字符(除了换行) + `at`, 并返回全部结果.
+修饰符 `g` 常用语执行一个全局搜索匹配,即(不仅仅返回第一个匹配的,而是返回全部)。
+例如,表达式 `/.(at)/g` 表示搜索 任意字符(除了换行) + `at`,并返回全部结果。
"/.(at)/" => The fat cat sat on the mat.
@@ -449,11 +450,11 @@
### 5.3 多行修饰符 (Multiline)
-多行修饰符 `m` 常用语执行一个多行匹配.
+多行修饰符 `m` 常用语执行一个多行匹配。
-像之前介绍的 `(^,$)` 用于检查格式是否是在待检测字符串的开头或结尾. 但我们如果想要它在每行的开头和结尾生效, 我们需要用到多行修饰符 `m`.
+像之前介绍的 `(^,$)` 用于检查格式是否是在待检测字符串的开头或结尾。但我们如果想要它在每行的开头和结尾生效,我们需要用到多行修饰符 `m`。
-例如, 表达式 `/at(.)?$/gm` 表示在待检测字符串每行的末尾搜索 `at`后跟一个或多个 `.` 的字符串, 并返回全部结果.
+例如,表达式 `/at(.)?$/gm` 表示在待检测字符串每行的末尾搜索 `at`后跟一个或多个 `.` 的字符串,并返回全部结果。
"/.at(.)?$/" => The fat
diff --git a/README-es.md b/README-es.md
index 48d54da2..41ec2bdf 100644
--- a/README-es.md
+++ b/README-es.md
@@ -9,13 +9,14 @@
* [Español](README-es.md)
* [Français](README-fr.md)
* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
## Qué es una expresión regular?
+
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
Una expresión regular es un patrón que que se compara con una cadena de caracteres de izquierda a derecha. La palabra "expresión regular" puede también ser escrita como "Regex" o "Regexp". Las expresiones regulares se utilizan para remplazar un texto dentro de una cadena de caracteres (*string*), validar formularios, extraer una porción de una cadena de caracteres (*substring*) basado en la coincidencia de una patrón, y muchas cosas más.
@@ -414,7 +415,7 @@ El modificador `g` se utiliza para realizar una coincidencia global
Por ejemplo, la expresión regular `/.(At)/g` significa: cualquier carácter,
excepto la nueva línea, seguido del carácter en minúscula `a`, seguido del carácter
en minúscula `t`. Debido a que proveimos el indicador `g` al final de la expresión
-regular, ahora encontrará todas las coincidencias de toda la cadena de entrada, no sólo la
+regular, ahora encontrará todas las coincidencias de toda la cadena de entrada, no sólo la
primera instancia (el cual es el comportamiento normal).
diff --git a/README-fr.md b/README-fr.md
index 6e7c65d6..8bd28b52 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -8,7 +8,8 @@
* [English](README.md)
* [Español](README-es.md)
* [Français](README-fr.md)
-* [中文版](README-cn.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
diff --git a/README-gr.md b/README-gr.md
index 8fb7da26..1fed2295 100644
--- a/README-gr.md
+++ b/README-gr.md
@@ -9,7 +9,7 @@
* [Español](README-es.md)
* [Français](README-fr.md)
* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
diff --git a/README-ja.md b/README-ja.md
index 126cde8a..aa3693fe 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -8,7 +8,8 @@
* [English](README.md)
* [Español](README-es.md)
* [Français](README-fr.md)
-* [中文版](README-cn.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
@@ -33,7 +34,7 @@
-この正規表現によって `john_doe, jo-hn_doe, john12_as` などは許容されることになります。
+この正規表現によって `john_doe`、`jo-hn_doe`、`john12_as` などは許容されることになります。
一方で `Jo` は大文字を含む上に短すぎるため許容されません。
## 目次
@@ -129,7 +130,7 @@
文字集合を指定するには角括弧でくくります。
文字の範囲を指定するにはハイフンを使用します。
角括弧内の文字の記述順はマッチングには関係ありません。
-例えば `[Tt]he` という正規表現は大文字 `T` または小文字 `t` の後に `h`, `e` が続く文字列を表します。
+例えば `[Tt]he` という正規表現は大文字 `T` または小文字 `t` の後に `h`、 `e` が続く文字列を表します。
"[Tt]he" => The car parked in the garage.
@@ -151,7 +152,7 @@
通常キャレットは文字列の開始を意味するメタ文字ですが、角括弧内で最初に使用されると
文字集合を否定する意味を持つようになります。
例えば `[^c]ar` という正規表現は `c` 以外の任意の文字列の後に
-`a`, `r` が続く文字列を表します。
+`a`、`r` が続く文字列を表します。
"[^c]ar" => The car parked in the garage.
@@ -161,7 +162,7 @@
## 2.3 繰り返し
-`+`, `*`, `?` はパターンが何回続くのかを指定するためのメタ文字になります。
+`+`、 `*`、 `?` はパターンが何回続くのかを指定するためのメタ文字になります。
これらのメタ文字は異なるシチュエーションで異なる振る舞いをします。
### 2.3.1 アスタリスク
@@ -181,7 +182,7 @@
任意の文字列を表現できます。
またスペースを表す `\s` と併用することで空白文字を表現できます。
例えば `\s*cat\s*` という正規表現は 0 個以上のスペースの後に
-小文字の `c`, `a`, `t` が続き、その後に 0 個以上のスペースが続きます。
+小文字の `c`、 `a`、 `t` が続き、その後に 0 個以上のスペースが続きます。
"\s*cat\s*" => The fat cat sat on the concatenation.
@@ -207,7 +208,7 @@
正規表現におけるメタ文字 `?` は直前の文字がオプションであることを意味します。
すなわち直前の文字が 0 個または 1 個現れることを意味します。
例えば `[T]?he` という正規表現は大文字の `T` が 0 個または 1 個出現し、
-その後に小文字の `h`, `e` が続くことを意味します。
+その後に小文字の `h`、 `e` が続くことを意味します。
"[T]he" => The car is parked in the garage.
@@ -258,7 +259,7 @@
文字グループ全体が繰り返すことを意味します。
例えば、 `(ab)*` という正規表現は "ab" という文字列の 0 個以上の繰り返しにマッチします。
文字グループ内では選言 `|` も使用することができます。
-例えば、`(c|g|p)ar` という正規表現は小文字の `c`, `g`, `p` のいずれかの後に
+例えば、`(c|g|p)ar` という正規表現は小文字の `c`、 `g`、 `p` のいずれかの後に
`a` が続き、さらに `r` が続くことを意味します。
@@ -289,7 +290,7 @@
記号として指定できるようになります。
例えば `.` という正規表現は改行を除く任意の文字として使用されますが、
`(f|c|m)at\.?` という正規表現では `.` 自体にマッチします。
-この正規表現は小文字の `f`, `c` または `m` の後に小文字の `a`, `t` が続き、
+この正規表現は小文字の `f`、 `c` または `m` の後に小文字の `a`、 `t` が続き、
さらに `.` が 0 個または 1 個続きます。
@@ -312,7 +313,7 @@
しかし `^b` という正規表現は前の文字列に対してはどれにもマッチしません。
"b" は `abc` という入力文字列の開始ではないからです。
他の例を見てみます。`^(T|t)he` は大文字の `T` または小文字の `t` から始まる文字列で
-その後に小文字の `h`, `e` が続くことを意味します。
+その後に小文字の `h`、 `e` が続くことを意味します。
"(T|t)he" => The car is parked in the garage.
@@ -385,7 +386,7 @@
肯定的な先読みを定義するには括弧を使用します。
その括弧の中で疑問符と等号を合わせて `(?=...)` のようにします。
先読みのパターンは括弧の中の等号の後に記述します。
-例えば `(T|t)he(?=\sfat)` という正規表現は小文字の `t` か大文字の `T` のどちらかの後に `h`, `e` が続きます。
+例えば `(T|t)he(?=\sfat)` という正規表現は小文字の `t` か大文字の `T` のどちらかの後に `h`、 `e` が続きます。
括弧内で肯定的な先読みを定義していますが、これは `The` または `the` の後に
`fat` が続くことを表しています。
@@ -448,7 +449,7 @@
### 5.1 大文字・小文字を区別しない
修飾子 `i` は大文字・小文字を区別したくないときに使用します。
-例えば `/The/gi` という正規表現は大文字の `T` の後に小文字の `h`, `e` が続くという意味ですが、
+例えば `/The/gi` という正規表現は大文字の `T` の後に小文字の `h`、 `e` が続くという意味ですが、
最後の `i` で大文字・小文字を区別しない設定にしています。
文字列内の全マッチ列を検索したいのでフラグ `g` も渡しています。
@@ -469,7 +470,7 @@
修飾子 `g` はグローバル検索(最初のマッチ列を検索する代わりに全マッチ列を検索する)を
行うために使用します。
例えば `/.(at)/g` という正規表現は、改行を除く任意の文字列の後に
-小文字の `a`, `t` が続きます。正規表現の最後にフラグ `g` を渡すことで、
+小文字の `a`、 `t` が続きます。正規表現の最後にフラグ `g` を渡すことで、
最初のマッチだけではなく(これがデフォルトの動作です)、入力文字列内の全マッチ列を検索するようにしています。
@@ -489,7 +490,7 @@
修飾子 `m` は複数行でマッチさせたいときに使用します。
前述で `(^, $)` という入力文字列の開始と終了を示すためのアンカーについて説明しましたが、
フラグ `m` は複数行でマッチさせるためのアンカーとして使用できます。
-例えば `/at(.)?$/gm` という正規表現は小文字の `a`, `t` に続き、改行を除く
+例えば `/at(.)?$/gm` という正規表現は小文字の `a`、 `t` に続き、改行を除く
任意の文字が 0 個または 1 個続くという意味ですが、
フラグ `m` を渡すことで入力文字列の各行でパターンを検索させることができます。
diff --git a/README-ko.md b/README-ko.md
index 7d0097ea..56d59b1b 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -8,7 +8,8 @@
* [English](README.md)
* [Español](README-es.md)
* [Français](README-fr.md)
-* [中文版](README-cn.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
diff --git a/README-pt_BR.md b/README-pt_BR.md
index de90728d..9c57b17a 100644
--- a/README-pt_BR.md
+++ b/README-pt_BR.md
@@ -9,9 +9,10 @@
* [Español](README-es.md)
* [Français](README-fr.md)
* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
+* [Turkish](README-tr.md)
* [Greek](README-gr.md)
## O que é uma Expressão Regular?
diff --git a/README-tr.md b/README-tr.md
index 956e85ea..f066ba98 100644
--- a/README-tr.md
+++ b/README-tr.md
@@ -8,7 +8,8 @@
* [English](README.md)
* [Español](README-es.md)
* [Français](README-fr.md)
-* [中文版](README-cn.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
@@ -113,7 +114,7 @@ Nokta `.` meta karakterin en basit örneğidir. `.` meta karakteri satır başla
## 2.2 Karakter Takımı
Karakter takımları aryıca Karakter sınıfı olarak bilinir. Karakter takımlarını belirtmek için köşeli ayraçlar kullanılır.
-Karakterin aralığını belirtmek için bir karakter takımında tire kullanın. Köşeli parantezlerdeki karakter aralığının sıralaması önemli değildir.
+Karakterin aralığını belirtmek için bir karakter takımında tire kullanın. Köşeli parantezlerdeki karakter aralığının sıralaması önemli değildir.
Örneğin, `[Tt]he` düzenli ifadesinin anlamı: bir büyük `T` veya küçük `t` harflerinin ardından sırasıyla `h` ve `e` harfi gelir.
@@ -153,7 +154,7 @@ Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, am
`*` sembolü, kendinden önce girilen eşlemenin sıfır veya daha fazla tekrarıyla eşleşir. Ama bir karakter seti ya da sınıf sonrasına girildiğinde, tüm karakter setinin tekrarlarını bulur.
-`a*` düzenli ifadesinin anlamı: `a` karakterinin sıfır veya daha fazla tekrarı.
+`a*` düzenli ifadesinin anlamı: `a` karakterinin sıfır veya daha fazla tekrarı.
`[a-z]*` düzenli ifadesinin anlamı: bir satırdaki herhangi bir sayıdaki küçük harfler.
@@ -250,7 +251,7 @@ Ayrıca karakter grubu içinde `|` meta karakterini kullanabiliriz.
## 2.6 Değişim
-Düzenli ifadede dik çizgi alternasyon(değişim, dönüşüm) tanımlamak için kullanılır. Alternasyon birden fazla ifade arasındaki bir koşul gibidir. Şu an, karakter grubu ve alternasyonun aynı şekilde çalıştığını düşünüyor olabilirsiniz. Ama, Karakter grubu ve alternasyon arasındaki büyük fark karakter grubu karakter düzeyinde çalışır ama alternasyon ifade düzeyinde çalışır.
+Düzenli ifadede dik çizgi alternasyon(değişim, dönüşüm) tanımlamak için kullanılır. Alternasyon birden fazla ifade arasındaki bir koşul gibidir. Şu an, karakter grubu ve alternasyonun aynı şekilde çalıştığını düşünüyor olabilirsiniz. Ama, Karakter grubu ve alternasyon arasındaki büyük fark karakter grubu karakter düzeyinde çalışır ama alternasyon ifade düzeyinde çalışır.
Örneğin, `(T|t)he|car` düzenli ifadesinin anlamı: Büyük `T` ya da küçük `t` karakteri, ardından küçük `h` karakteri, ardından küçük `e` ya da `c` karakteri, ardından küçük `a`, ardından küçük `r` karakteri gelir.
@@ -264,7 +265,7 @@ Düzenli ifadede dik çizgi alternasyon(değişim, dönüşüm) tanımlamak içi
`\` işareti sonraki karakteri hariç tutmak için kullanılır. Bu bir semboülü ayrılmış karakterlerde `{ } [ ] / \ + * . $ ^ | ?` dahil olmak üzere eşleşen bir karakter olarak belirtmemizi sağlar. Bir özel karakteri eşleşen bir karakter olarak kullanmak için önüne `\` işareti getirin.
-Örneğin, `.` düzenli ifadesi yeni satır hariç herhangi bir karakteri eşleştirmek için kullanılır.
+Örneğin, `.` düzenli ifadesi yeni satır hariç herhangi bir karakteri eşleştirmek için kullanılır.
Bir harf öbeği içinde nokta `.` karakterini yakalamak için `.` ayrılmış karakterini hariç tutmamız gerekir. Bunun için nokta önüne `\` işaretini koymamız gereklidir.
`(f|c|m)at\.?` düzenli ifadesinin anlamı: küçük `f`, `c`ya da `m` harfi, ardından küçük `a` harfi, ardından küçük `t` harfi, ardından opsiyonel `.` karakteri gelir.
@@ -277,7 +278,7 @@ Bir harf öbeği içinde nokta `.` karakterini yakalamak için `.` ayrılmış k
## 2.8 Sabitleyiciler
-Düzenli ifadelerde, eşleşen sembolün girilen harf öbeğinin başlangıç sembolü veya bitiş sembolü olup olmadığını kontrol etmek için sabitleyicileri kullanırız.
+Düzenli ifadelerde, eşleşen sembolün girilen harf öbeğinin başlangıç sembolü veya bitiş sembolü olup olmadığını kontrol etmek için sabitleyicileri kullanırız.
Sabitleyiciler iki çeşittir: İlk çeşit eşleşen karakterin girişin ilk karakteri olup olmadığını kontrol eden şapka `^` karakteri, ve ikinci çeşit eşleşen karakterin girişin son karakteri olup olmadığını kontrol eden dolar `$` karakteridir.
### 2.8.1 Şapka İşareti
@@ -285,7 +286,7 @@ Sabitleyiciler iki çeşittir: İlk çeşit eşleşen karakterin girişin ilk ka
Şapka `^` işareti eşleşen karakterin giriş harf öbeğinin ilk karakteri olup olmadığını kontrol etmek için kullanılır.
Eğer `^a` düzenli ifadesini `abc` harf öbeğine uygularsak `a` ile eşleşir. Ama `^b` ifadesini uygularsak bir eşleşme bulamayız. Bunun nedeni `abc` harf öbeğinde `b` karakterinin başlangıç karakteri olmamasıdır.
-Bir başka örnek üzerinden ilerlersek,
+Bir başka örnek üzerinden ilerlersek,
`^(T|t)he` düzenli ifadesinin anlamı: büyük `T` ya da `t` karakteri giriş harf öbeğinin ilk karakteri olmak üzere, ardından küçük `h`, ardından küçük `e` karakteri gelir.
diff --git a/README.md b/README.md
index 4e1a6f32..e35e3ff9 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
* [Español](README-es.md)
* [Français](README-fr.md)
* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
+* [中文(简体)版](README-cn.md)
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
From f160d21c0c4ef42b2631708f3a8d5d53faffa4c6 Mon Sep 17 00:00:00 2001
From: Pichet Itngam
Date: Fri, 20 Oct 2017 11:23:29 +0700
Subject: [PATCH 007/162] Add missing "|" (#99)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4e1a6f32..443973e3 100644
--- a/README.md
+++ b/README.md
@@ -106,7 +106,7 @@ square brackets. The meta characters are as follows:
|[ ]|Character class. Matches any character contained between the square brackets.|
|[^ ]|Negated character class. Matches any character that is not contained between the square brackets|
|*|Matches 0 or more repetitions of the preceding symbol.|
-|+|Matches 1 or more repetitions of the preceding symbol.
+|+|Matches 1 or more repetitions of the preceding symbol.|
|?|Makes the preceding symbol optional.|
|{n,m}|Braces. Matches at least "n" but not more than "m" repetitions of the preceding symbol.|
|(xyz)|Character group. Matches the characters xyz in that exact order.|
From f4d7416fd55b79e39e9dc4871c4058644f471db8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Munk=C3=A1csi=20M=C3=A1rk?=
Date: Tue, 24 Oct 2017 22:57:59 +0200
Subject: [PATCH 008/162] hungarian file +links added
---
README-cn.md | 1 +
README-es.md | 1 +
README-fr.md | 1 +
README-gr.md | 1 +
README-hu.md | 0
README-ja.md | 1 +
README-ko.md | 1 +
README-pt_BR.md | 1 +
README-tr.md | 1 +
README.md | 1 +
10 files changed, 9 insertions(+)
create mode 100644 README-hu.md
diff --git a/README-cn.md b/README-cn.md
index add4168c..a59cb5d5 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## 什么是正则表达式?
diff --git a/README-es.md b/README-es.md
index 48d54da2..16d3ab01 100644
--- a/README-es.md
+++ b/README-es.md
@@ -14,6 +14,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## Qué es una expresión regular?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
diff --git a/README-fr.md b/README-fr.md
index 6e7c65d6..c788cac5 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## Qu'est-ce qu'une expression régulière?
diff --git a/README-gr.md b/README-gr.md
index 8fb7da26..59f9112d 100644
--- a/README-gr.md
+++ b/README-gr.md
@@ -14,6 +14,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## Τι είναι μια Κανονική Έκφραση (Regular Expression);
diff --git a/README-hu.md b/README-hu.md
new file mode 100644
index 00000000..e69de29b
diff --git a/README-ja.md b/README-ja.md
index 126cde8a..bdcaaa0e 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## 正規表現とは
diff --git a/README-ko.md b/README-ko.md
index 7d0097ea..795299a3 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## 정규표현식이란 무엇인가?
diff --git a/README-pt_BR.md b/README-pt_BR.md
index de90728d..aca692d1 100644
--- a/README-pt_BR.md
+++ b/README-pt_BR.md
@@ -13,6 +13,7 @@
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## O que é uma Expressão Regular?
diff --git a/README-tr.md b/README-tr.md
index 956e85ea..9d32f1b4 100644
--- a/README-tr.md
+++ b/README-tr.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## Düzenli İfade Nedir?
diff --git a/README.md b/README.md
index 443973e3..74693e79 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
## What is Regular Expression?
From b3789f2e40df944e8b74de70b029dd813d0f9f5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Munk=C3=A1csi=20M=C3=A1rk?=
Date: Tue, 24 Oct 2017 23:00:12 +0200
Subject: [PATCH 009/162] hungarian translation added for proofreading
---
README-hu.md | 877 ++++++++++++++++++++++++++++++++++++++++++++++
img/regexp-hu.png | Bin 0 -> 35766 bytes
2 files changed, 877 insertions(+)
create mode 100644 img/regexp-hu.png
diff --git a/README-hu.md b/README-hu.md
index e69de29b..a0e08a2d 100644
--- a/README-hu.md
+++ b/README-hu.md
@@ -0,0 +1,877 @@
+
+
+
+
+
+## Translations:
+## Fordítások:
+
+* [English](README.md)
+* [Español](README-es.md)
+* [Français](README-fr.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文版](README-cn.md)
+* [日本語](README-ja.md)
+* [한국어](README-ko.md)
+* [Turkish](README-tr.md)
+* [Greek](README-gr.md)
+* [Magyar](README-hu.md)
+
+## What is Regular Expression?
+## Mi az a reguláris kifejezés?
+
+> Regular expression is a group of characters or symbols which is used to find a specific pattern from a text.
+> A reguláris kifejezés karakterek vagy szimbólumok egy csoportja, amelyet egy szövegből adott minták megtalálására használnak.
+
+A regular expression is a pattern that is matched against a subject string from
+left to right. The word "Regular expression" is a mouthful, you will usually
+find the term abbreviated as "regex" or "regexp". Regular expression is used for
+replacing a text within a string, validating form, extract a substring from a
+string based upon a pattern match, and so much more.
+
+A reguláris kifejezés egy olyan minta, amely illeszkedik egy adott karakterláncra
+balról jobbra. Maga a "Regular expression" kifejezést általában rövidítve lehet
+megtalálni, mint "regex" vagy "regexp". A reguláris kifejezést használják szövegrészek
+lecserélésére egy szövegben, űrlapok validálására, szövegrészek kiválasztására
+mintaegyezés alapján egy hosszabb szövegből és így tovább.
+
+Imagine you are writing an application and you want to set the rules for when a
+user chooses their username. We want to allow the username to contain letters,
+numbers, underscores and hyphens. We also want to limit the number of characters
+in username so it does not look ugly. We use the following regular expression to
+validate a username:
+
+Képzeld el, hogy egy alkalmazást írsz és szeretnél szabályokat állítani a felhasználónév
+kiválasztásához. A felhasználónév csak betűket, számokat, aláhúzásjelet és kötőjelet
+tartalmazhat. Szeretnénk limitálni a karakterek maximális számát is a felhasználónévben,
+hogy ne legyen csúnya. A felhasználónév validálására a következő reguláris kifejezést
+használjuk:
+
+
+
+
+
+
+
+Above regular expression can accept the strings `john_doe`, `jo-hn_doe` and
+`john12_as`. It does not match `Jo` because that string contains uppercase
+letter and also it is too short.
+
+A feljebbi reguláris kifejezés elfogadja a `john_doe`, `jo-hn_doe` és a
+`john12_as` karakterláncokat. Nem fog egyezni a `Jo`-ra mert ez nagybetűt
+tartalmaz és túl rövid is.
+
+## Table of Contents
+## Tartalomjegyzék
+
+- [Basic Matchers](#1-basic-matchers)
+- [Meta character](#2-meta-characters)
+ - [Full stop](#21-full-stop)
+ - [Character set](#22-character-set)
+ - [Negated character set](#221-negated-character-set)
+ - [Repetitions](#23-repetitions)
+ - [The Star](#231-the-star)
+ - [The Plus](#232-the-plus)
+ - [The Question Mark](#233-the-question-mark)
+ - [Braces](#24-braces)
+ - [Character Group](#25-character-group)
+ - [Alternation](#26-alternation)
+ - [Escaping special character](#27-escaping-special-character)
+ - [Anchors](#28-anchors)
+ - [Caret](#281-caret)
+ - [Dollar](#282-dollar)
+- [Shorthand Character Sets](#3-shorthand-character-sets)
+- [Lookaround](#4-lookaround)
+ - [Positive Lookahead](#41-positive-lookahead)
+ - [Negative Lookahead](#42-negative-lookahead)
+ - [Positive Lookbehind](#43-positive-lookbehind)
+ - [Negative Lookbehind](#44-negative-lookbehind)
+- [Flags](#5-flags)
+ - [Case Insensitive](#51-case-insensitive)
+ - [Global search](#52-global-search)
+ - [Multiline](#53-multiline)
+
+- [Bevezetés](#1-basic-matchers)
+- [Meta karakterek](#2-meta-characters)
+ - [Full stop](#21-full-stop)
+ - [Karakter osztályok](#22-character-set)
+ - [Negált karakter osztályok](#221-negated-character-set)
+ - [Ismétlések](#23-repetitions)
+ - [A csillag](#231-the-star)
+ - [A plusz](#232-the-plus)
+ - [A kérdőjel](#233-the-question-mark)
+ - [A kapcsos zárójelek](#24-braces)
+ - [Karakter csoportok](#25-character-group)
+ - [Alternálás](#26-alternation)
+ - [Speciális karakter escape-elése](#27-escaping-special-character)
+ - [Horgonyok](#28-anchors)
+ - [Kalap](#281-caret)
+ - [Dollár](#282-dollar)
+- [Shorthand Karakter osztályok](#3-shorthand-character-sets)
+- [Lookaround](#4-lookaround)
+ - [Positive Lookahead](#41-positive-lookahead)
+ - [Negative Lookahead](#42-negative-lookahead)
+ - [Positive Lookbehind](#43-positive-lookbehind)
+ - [Negative Lookbehind](#44-negative-lookbehind)
+- [Flag-ek](#5-flags)
+ - [Kis-nagybetű érzéketlen](#51-case-insensitive)
+ - [Globális keresés](#52-global-search)
+ - [Többsoros](#53-multiline)
+
+## 1. Basic Matchers
+## 1. Bevezetés
+
+A regular expression is just a pattern of characters that we use to perform
+search in a text. For example, the regular expression `the` means: the letter
+`t`, followed by the letter `h`, followed by the letter `e`.
+
+A reguláris kifejezés egy karakterminta, amit keresésre használunk egy
+szövegben. Például a `the` reguláris kifejezés a következőt jelenti: egy `t` betű,
+amit `h` követ, amit egy `e` követ.
+
+
+"the" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/dmRygT/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/dmRygT/1)
+
+The regular expression `123` matches the string `123`. The regular expression is
+matched against an input string by comparing each character in the regular
+expression to each character in the input string, one after another. Regular
+expressions are normally case-sensitive so the regular expression `The` would
+not match the string `the`.
+
+Az `123` reguláris kifejezés illeszkedik a `123` karakterláncra. A reguláris kifejezés
+minden egyes karaktere össze lesz hasonlítva a bevitt karakterlánc minden elemével
+egymás után. A reguláris kifejezések alap esetben kis-nagybetű érzékenyek, tehát a
+`The` reguláris kifejezés nem fog illeszkedni a `the` karakterláncra.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/1paXsy/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/1paXsy/1)
+
+## 2. Meta Characters
+## 2. Meta karakterek
+
+Meta characters are the building blocks of the regular expressions. Meta
+characters do not stand for themselves but instead are interpreted in some
+special way. Some meta characters have a special meaning and are written inside
+square brackets. The meta characters are as follows:
+
+A meta karakterek a reguláris kifejezések építőkockái. A meta karakterek speciális
+módon értelmezendőek. Némelyik meta karakternek speciális jelentése van és
+szögletes zárójelek közé vannak téve. A meta karakterek a következők:
+
+|Meta character|Description|
+|:----:|----|
+|.|Period matches any single character except a line break.|
+|[ ]|Character class. Matches any character contained between the square brackets.|
+|[^ ]|Negated character class. Matches any character that is not contained between the square brackets|
+|*|Matches 0 or more repetitions of the preceding symbol.|
+|+|Matches 1 or more repetitions of the preceding symbol.|
+|?|Makes the preceding symbol optional.|
+|{n,m}|Braces. Matches at least "n" but not more than "m" repetitions of the preceding symbol.|
+|(xyz)|Character group. Matches the characters xyz in that exact order.|
+|||Alternation. Matches either the characters before or the characters after the symbol.|
+|\|Escapes the next character. This allows you to match reserved characters [ ] ( ) { } . * + ? ^ $ \ ||
+|^|Matches the beginning of the input.|
+|$|Matches the end of the input.|
+
+|Meta karakter|Leírás|
+|:----:|----|
+|.|A pont illeszkedik minden egyes karakterre kivéve a sortörést.|
+|[ ]|Karakter osztály. Minden karakterre illeszkedik ami a szögletes zárójelek közt van.|
+|[^ ]|Negált karakter osztály. Minden karakterre illeszkedik ami nincs a szögletes zárójelek közt.|
+|*|Illeszkedik az őt megelőző szimbólum 0 vagy több ismétlődésére.|
+|+|Illeszkedik az őt megelőző szimbólum 1 vagy több ismétlődésére.|
+|?|Opcionálissá teszi az őt megelőző szimbólumot.|
+|{n,m}|Kapcsos zárójelek. Illeszkedik az őt megelőző szimbólum minimum "n" de nem több mint "m" ismétlődésére.|
+|(xyz)|Karakter csoport. Illeszkedik az xyz karakterekre pontosan ilyen sorrendben.|
+|||Alternáció. Illeszkedik a szimbólum előtt és után álló karakterekre is.|
+|\|Escape-li a következő karaktert. A segítségével lefoglalt karakterekre is lehet illeszkedni [ ] ( ) { } . * + ? ^ $ \ ||
+|^|A bevitel elejére illeszkedik.|
+|$|A bevitel végére illeszkedik.|
+
+## 2.1 Full stop
+## 2.1 Full stop
+
+Full stop `.` is the simplest example of meta character. The meta character `.`
+matches any single character. It will not match return or newline characters.
+For example, the regular expression `.ar` means: any character, followed by the
+letter `a`, followed by the letter `r`.
+
+A full stop `.` a legegyszerűbb meta karakter példa. A `.` meta karakter illeszkedik
+minden egyes karakterre. Nem fog illeszkedni a kocsi vissza és a sortörés karakterekre.
+Például a `.ar` reguláris kifejezés jelentése: minden karakter, amit `a` aztán `r` követ.
+
+
+".ar" => The car parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/xc9GkU/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/xc9GkU/1)
+
+## 2.2 Character set
+## 2.2 Karakter osztályok
+
+Character sets are also called character class. Square brackets are used to
+specify character sets. Use a hyphen inside a character set to specify the
+characters' range. The order of the character range inside square brackets
+doesn't matter. For example, the regular expression `[Tt]he` means: an uppercase
+`T` or lowercase `t`, followed by the letter `h`, followed by the letter `e`.
+
+A szögletes zárójelekkel határozzuk meg a karakter osztályokat. A szögletes
+zárójelek közt kötőjel karakterrel határozhatunk meg karakter tartományokat.
+A karaktertartomány sorrendje nem számít. Például a `[Tt]he` reguláris kifejezés
+jelentése: nagybetűs `T` vagy kisbetűs `t` amit egy `h` majd egy `e` betű követ.
+
+
+"[Tt]he" => The car parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/2ITLQ4/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/2ITLQ4/1)
+
+A period inside a character set, however, means a literal period. The regular
+expression `ar[.]` means: a lowercase character `a`, followed by letter `r`,
+followed by a period `.` character.
+
+Egy pont a karakter osztályon belül egyébként szó szerint pont-ot jelent. A
+`ar[.]` reguláris kifejezés jelentése: kisbetűs `a` amit egy `r` aztán egy
+pont `.` karakter követ.
+
+
+"ar[.]" => A garage is a good place to park a car.
+
+
+[Test the regular expression](https://regex101.com/r/wL3xtE/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/wL3xtE/1)
+
+### 2.2.1 Negated character set
+### 2.2.1 Negált karakter osztályok
+
+In general, the caret symbol represents the start of the string, but when it is
+typed after the opening square bracket it negates the character set. For
+example, the regular expression `[^c]ar` means: any character except `c`,
+followed by the character `a`, followed by the letter `r`.
+
+Általában a kalap szimbólum egy karakterlánc elejét jelenti, de ha egy nyitó
+szögletes zárójel után áll, akkor negálja a karakter osztályt. Például a
+`[^c]ar` reguláris kifejezés jelentése: minden karakter a `c` kivételével
+ami után `a` aztán egy `r` betű áll.
+
+
+"[^c]ar" => The car parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/nNNlq3/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/nNNlq3/1)
+
+## 2.3 Repetitions
+## 2.3 Ismétlések
+
+Following meta characters `+`, `*` or `?` are used to specify how many times a
+subpattern can occur. These meta characters act differently in different
+situations.
+
+A következő meta karaktereket `+`, `*` vagy `?` arra használjuk, hogy meghatározzuk,
+hányszor fordulhat elő az al-minta. Ezek a meta karakterek máshogy viselkednek
+adott helyzetekben.
+
+### 2.3.1 The Star
+### 2.3.1 A csillag
+
+The symbol `*` matches zero or more repetitions of the preceding matcher. The
+regular expression `a*` means: zero or more repetitions of preceding lowercase
+character `a`. But if it appears after a character set or class then it finds
+the repetitions of the whole character set. For example, the regular expression
+`[a-z]*` means: any number of lowercase letters in a row.
+
+A `*` szimbólum az őt megelőző karakter nulla vagy több ismétlődésére illeszkedik.
+A `a*` reguláris kifejezés jelentése: nulla vagy több ismétlődése az őt megelőző `a`
+karakternek. De ha egy karakter osztály után áll akkor az egész karakterosztály
+ismétlődését keresi. Például, a `[a-z]*` reguláris kifejezés jelentése: bármennyi
+kisbetűs betű egy sorban.
+
+
+"[a-z]*" => The car parked in the garage #21.
+
+
+[Test the regular expression](https://regex101.com/r/7m8me5/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/7m8me5/1)
+
+The `*` symbol can be used with the meta character `.` to match any string of
+characters `.*`. The `*` symbol can be used with the whitespace character `\s`
+to match a string of whitespace characters. For example, the expression
+`\s*cat\s*` means: zero or more spaces, followed by lowercase character `c`,
+followed by lowercase character `a`, followed by lowercase character `t`,
+followed by zero or more spaces.
+
+A `*` szimbólum használható a `.` meta karakterrel `.*`, ez illeszkedik
+bármilyen karakterláncra. A `*` szimbólum használható a whitespace karakterrel `\s`
+együtt, hogy illeszkedjen egy whitespace-ekből álló karakterláncra. Például a
+`\s*cat\s*`kifejezés jelentése: nulla vagy több szóköz, amit egy kisbetűs `c`,
+aztán egy kisbetűs `a`, aztán egy kisbetűs `t`, amit még nulla vagy több szóköz követ.
+
+
+"\s*cat\s*" => The fat cat sat on the concatenation.
+
+
+[Test the regular expression](https://regex101.com/r/gGrwuz/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/gGrwuz/1)
+
+### 2.3.2 The Plus
+### 2.3.2 A plusz
+
+The symbol `+` matches one or more repetitions of the preceding character. For
+example, the regular expression `c.+t` means: lowercase letter `c`, followed by
+at least one character, followed by the lowercase character `t`. It needs to be
+clarified that `t` is the last `t` in the sentence.
+
+A `+` szimbólum illeszkedik az őt megelőző karakter egy vagy több ismétlődésére.
+Például a `c.+t` kifejezés jelentése: kisbetűs `c` betű, amit legalább egy vagy
+több `t` követ. Itt tisztázni kell hogy a `t` az utolsó `t` a mondatban.
+
+
+"c.+t" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/Dzf9Aa/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/Dzf9Aa/1)
+
+### 2.3.3 The Question Mark
+### 2.3.3 A kérdőjel
+
+In regular expression the meta character `?` makes the preceding character
+optional. This symbol matches zero or one instance of the preceding character.
+For example, the regular expression `[T]?he` means: Optional the uppercase
+letter `T`, followed by the lowercase character `h`, followed by the lowercase
+character `e`.
+
+A reguláris kifejezésben a `?` meta karakter opcionálissá teszi az őt
+megelőző karaktert. Ez a szimbólum az őt megelőző karakter nulla vagy egy
+példányára illeszkedik. Például a `[T]?he` kifejezés jelentése: opcionális a
+nagybetűs `T`, amit egy kisbetűs `h`, majd egy kisbetűs `e` követ.
+
+
+"[T]he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/cIg9zm/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/cIg9zm/1)
+
+
+"[T]?he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/kPpO2x/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/kPpO2x/1)
+
+## 2.4 Braces
+## 2.4 A kapcsos zárójelek
+
+In regular expression braces that are also called quantifiers are used to
+specify the number of times that a character or a group of characters can be
+repeated. For example, the regular expression `[0-9]{2,3}` means: Match at least
+2 digits but not more than 3 ( characters in the range of 0 to 9).
+
+A reguláris kifejezésben a kapcsos zárójeleket annak meghatározására használjuk,
+hogy egy karakter vagy egy karakter csoport hányszor ismétlődhet. Például a
+`[0-9]{2,3}` kifejezés jelentése: minimum 2 de nem több mint 3 karakter a `[0-9]`
+karaktertartományon belül.
+
+
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Test the regular expression](https://regex101.com/r/juM86s/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/juM86s/1)
+
+We can leave out the second number. For example, the regular expression
+`[0-9]{2,}` means: Match 2 or more digits. If we also remove the comma the
+regular expression `[0-9]{3}` means: Match exactly 3 digits.
+
+Kihagyhatjuk a második számot. Például a `[0-9]{2,}` kifejezés jelentése:
+2 vagy több számra illeszkedik. Ha a vesszőt is kitöröljük `[0-9]{3}`: Pontosan
+3 számra illeszkedik.
+
+
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Test the regular expression](https://regex101.com/r/Gdy4w5/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/Gdy4w5/1)
+
+
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Test the regular expression](https://regex101.com/r/Sivu30/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/Sivu30/1)
+
+## 2.5 Character Group
+## 2.5 Karakter csoportok
+
+Character group is a group of sub-patterns that is written inside Parentheses `(...)`.
+As we discussed before that in regular expression if we put a quantifier after a
+character then it will repeat the preceding character. But if we put quantifier
+after a character group then it repeats the whole character group. For example,
+the regular expression `(ab)*` matches zero or more repetitions of the character
+"ab". We can also use the alternation `|` meta character inside character group.
+For example, the regular expression `(c|g|p)ar` means: lowercase character `c`,
+`g` or `p`, followed by character `a`, followed by character `r`.
+
+A karakter csoport al-minták csoportja amik zárójelek közé `(...)` vannak írva.
+Ahogy előbb már megbeszéltük, ha egy karakter után ismétlő karaktert rakunk, az
+ismételni fogja az előtte lévő karaktert. De ha egy ismétlő karaktert egy karakter
+csoport után rakunk, az ismételni fogja az egész csoportot. Például a `(ab)*`
+kifejezés illeszkedik nulla vagy több ismétlődésére az `ab` karaktereknek.
+Használhatunk alternáló meta karaktert `|` is a csoporton belül. Például a `(c|g|p)ar`
+kifejezés jelentése: kisbetűs `c`, `g` vagy `p` karakter, amit egy `a` aztán
+egy `r` karakter követ.
+
+
+"(c|g|p)ar" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/tUxrBG/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/tUxrBG/1)
+
+## 2.6 Alternation
+## 2.6 Alternálás
+
+In regular expression Vertical bar `|` is used to define alternation.
+Alternation is like a condition between multiple expressions. Now, you may be
+thinking that character set and alternation works the same way. But the big
+difference between character set and alternation is that character set works on
+character level but alternation works on expression level. For example, the
+regular expression `(T|t)he|car` means: uppercase character `T` or lowercase
+`t`, followed by lowercase character `h`, followed by lowercase character `e` or
+lowercase character `c`, followed by lowercase character `a`, followed by
+lowercase character `r`.
+
+A reguláris kifejezésben a függőleges vonalat `|` alternálásra (választásra)
+használjuk. Az alternálás olyan, mint egy feltétel több kifejezés közt. Most
+azt gondolhatod, hogy a karakter osztály és az alternáció ugyan úgy működik.
+De a fő különbség köztük, hogy a karakter osztály a karakterek szintjén működik,
+az alternáció viszont a kifejezés szintjén. Például a `(T|t)he|car` kifejezés
+jelentése: nagybetűs `T` karakter vagy kisbetűs `t` karakter, amit egy `h` és
+egy `e` követ, VAGY kisbetűs `c` aztán `a` aztán `r` karakter.
+
+
+"(T|t)he|car" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/fBXyX0/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/fBXyX0/1)
+
+## 2.7 Escaping special character
+## 2.7 Speciális karakter escape-elése
+
+Backslash `\` is used in regular expression to escape the next character. This
+allows us to specify a symbol as a matching character including reserved
+characters `{ } [ ] / \ + * . $ ^ | ?`. To use a special character as a matching
+character prepend `\` before it.
+
+A visszaper `\` a reguláris kifejezésekben a következő karakter escape-elésére
+való. Ez enged nekünk szimbólumokat vagy lefoglalt karaktereket `{ } [ ] / \ + * . $ ^ | ?`
+megadni. Egy speciális karakter egyező karakterként való megadásához tedd elé
+a `\` karaktert.
+
+For example, the regular expression `.` is used to match any character except
+newline. Now to match `.` in an input string the regular expression
+`(f|c|m)at\.?` means: lowercase letter `f`, `c` or `m`, followed by lowercase
+character `a`, followed by lowercase letter `t`, followed by optional `.`
+character.
+
+Például a `.` kifejezést az összes karakter, kivéve a sortörés illeszkedéséhez
+használjuk. A `(f|c|m)at\.?` kifejezés jelentése: kisbetűs `f`, `c` vagy `m`, amit
+egy kisbetűs `a` aztán egy kisbetűs `t`, amit egy opcionális `.` karakter követ.
+
+
+"(f|c|m)at\.?" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/DOc5Nu/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/fBXyX0/1)
+
+## 2.8 Anchors
+## 2.8 Horgonyok
+
+In regular expressions, we use anchors to check if the matching symbol is the
+starting symbol or ending symbol of the input string. Anchors are of two types:
+First type is Caret `^` that check if the matching character is the start
+character of the input and the second type is Dollar `$` that checks if matching
+character is the last character of the input string.
+
+A reguláris kifejezésekben horgonyokat használunk, hogy megnézzük, az illeszkedő
+szimbólum a kezdő vagy a záró szimbóluma-e a karakterláncnak. A horgonyoknak két
+fajtájuk van: Az első a Kalap `^`, ami megnézi, hogy az egyező karakter a karakterlánc
+kezdő kerektere-e és a második a Dollár `$`, ami azt vizsgálja, hogy az egyező
+karakter a karakterlánc utolsó karaktere-e.
+
+### 2.8.1 Caret
+### 2.8.1 Kalap
+
+Caret `^` symbol is used to check if matching character is the first character
+of the input string. If we apply the following regular expression `^a` (if a is
+the starting symbol) to input string `abc` it matches `a`. But if we apply
+regular expression `^b` on above input string it does not match anything.
+Because in input string `abc` "b" is not the starting symbol. Let's take a look
+at another regular expression `^(T|t)he` which means: uppercase character `T` or
+lowercase character `t` is the start symbol of the input string, followed by
+lowercase character `h`, followed by lowercase character `e`.
+
+A kalap `^` szimbólumot arra használjuk, hogy megnézzük, hogy az egyező karakter
+a karakterlánc kezdő kerektere-e. Ha megadjuk a következő kifejezést: `^a`,
+akkor illeszkedik a `abc` karakterlánc `a` karakterére, mert az za első. De ha
+megadjuk, hogy: `^b`, ez nem fog illeszkedni az `abc` egyik részére sem, mert
+nem `b` a kezdő karakter. Nézzünk meg egy másik kifejezést. `^(T|t)he` jelentése:
+nagybetűs `T` vagy kisbetűs `t` a kezdő karaktere a karakterláncnak, amit kisbetűs
+`h`, majd kisbetűs `e` követ.
+
+
+"(T|t)he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/5ljjgB/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/5ljjgB/1)
+
+
+"^(T|t)he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/jXrKne/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/jXrKne/1)
+
+### 2.8.2 Dollar
+### 2.8.2 Dollár
+
+Dollar `$` symbol is used to check if matching character is the last character
+of the input string. For example, regular expression `(at\.)$` means: a
+lowercase character `a`, followed by lowercase character `t`, followed by a `.`
+character and the matcher must be end of the string.
+
+A dollár `$` szimbólumot arra használjuk, hogy megnézzük, hogy az egyező
+karakter a karakterlánc utolsó karaktere-e. Például a `(at\.)$` kifejezés
+jelentése: egy kisbetűs `a`, amit egy kisbetűs `t`, amit egy `.` követ. És
+ennek az egésznek a karakterlánc végén kell lennie.
+
+
+"(at\.)" => The fat cat. sat. on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/y4Au4D/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/y4Au4D/1)
+
+
+"(at\.)$" => The fat cat. sat. on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/t0AkOd/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/t0AkOd/1)
+
+## 3. Shorthand Character Sets
+## 3. Shorthand Karakter osztályok
+
+Regular expression provides shorthands for the commonly used character sets,
+which offer convenient shorthands for commonly used regular expressions. The
+shorthand character sets are as follows:
+
+A gyakran használt karakter osztályokra a reguláris kifejezésnek vannak
+rövidítései, amikkel kényelmesebben tudunk használni általános kifejezéseket.
+A shorthand karakter osztályok a következők:
+
+|Shorthand|Description|
+|:----:|----|
+|.|Any character except new line|
+|\w|Matches alphanumeric characters: `[a-zA-Z0-9_]`|
+|\W|Matches non-alphanumeric characters: `[^\w]`|
+|\d|Matches digit: `[0-9]`|
+|\D|Matches non-digit: `[^\d]`|
+|\s|Matches whitespace character: `[\t\n\f\r\p{Z}]`|
+|\S|Matches non-whitespace character: `[^\s]`|
+
+|Rövidítés|Leírás|
+|:----:|----|
+|.|Minden karakter a sortörésen kívül.|
+|\w|Az alfanumerikus karakterekre illeszkedik: `[a-zA-Z0-9_]`|
+|\W|A nem alfanumerikus karakterekre illeszkedik: `[^\w]`|
+|\d|Számra illeszkedik: `[0-9]`|
+|\D|Nem számra illeszkedik: `[^\d]`|
+|\s|Whitespace karakterre illeszkedik: `[\t\n\f\r\p{Z}]`|
+|\S|Nem whitespace karakterre illeszkedik: `[^\s]`|
+
+## 4. Lookaround
+## 4. Lookaround
+
+Lookbehind and lookahead (also called lookaround) are specific types of
+***non-capturing groups*** (Used to match the pattern but not included in matching
+list). Lookaheads are used when we have the condition that this pattern is
+preceded or followed by another certain pattern. For example, we want to get all
+numbers that are preceded by `$` character from the following input string
+`$4.44 and $10.88`. We will use following regular expression `(?<=\$)[0-9\.]*`
+which means: get all the numbers which contain `.` character and are preceded
+by `$` character. Following are the lookarounds that are used in regular
+expressions:
+
+A lookbehind (hátranézés) és a lookahead (előrenézés) speciális típusai a
+***nem tárolt csoport***oknak, amiket illeszkedésre használnak, de nincsenek
+benne az illeszkedési listában. Az előrenézést akkor használjuk, ha feltételezzük,
+hogy ezt a mintát egy másik minta előzi meg, vagy követi. Például kell nekünk
+az összes szám ami előtt `$` karakter áll a következő karakterláncból: `$4.44 and $10.88`.
+Ezt a mintát fogjuk használni: `(?<=\$)[0-9\.]*`, aminek a jelentése: Szedd ki az
+összes számot ami `.` karaktert tartalmaz és megelőzi egy `$` karakter. A
+következő lookaround-okat használhatjuk:
+
+|Symbol|Description|
+|:----:|----|
+|?=|Positive Lookahead|
+|?!|Negative Lookahead|
+|?<=|Positive Lookbehind|
+|?
+"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/IDDARt/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/IDDARt/1)
+
+### 4.2 Negative Lookahead
+### 4.2 Negative Lookahead
+
+Negative lookahead is used when we need to get all matches from input string
+that are not followed by a pattern. Negative lookahead is defined same as we define
+positive lookahead but the only difference is instead of equal `=` character we
+use negation `!` character i.e. `(?!...)`. Let's take a look at the following
+regular expression `(T|t)he(?!\sfat)` which means: get all `The` or `the` words
+from input string that are not followed by the word `fat` precedes by a space
+character.
+
+A negatív előrenézést akkor használjuk, ha az olyan illeszkedések kellenek,
+amelyeket nem követ egy bizonyos minta. A negatív előrenézést ugyanúgy
+definiáljuk mint a pozitív előrenézést, az egyetlen különbség, hogy az
+egyenlőségjel `=` helyett negálást `!` használunk: `(?!...)`. Nézzük meg
+a következő kifejezést: `(T|t)he(?!\sfat)`, jelentése: szedd ki az összes
+`The` vagy `the` szót, amelyeket nem követ a `fat` szó (amit még megelőz
+egy szóköz).
+
+
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/V32Npg/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/V32Npg/1)
+
+### 4.3 Positive Lookbehind
+### 4.3 Positive Lookbehind
+
+Positive lookbehind is used to get all the matches that are preceded by a
+specific pattern. Positive lookbehind is denoted by `(?<=...)`. For example, the
+regular expression `(?<=(T|t)he\s)(fat|mat)` means: get all `fat` or `mat` words
+from input string that are after the word `The` or `the`.
+
+A pozitív hátranézést akkor használjuk, ha kell az összes illeszkedés, amit
+egy megadott minta előz meg. A pozitív hátranézés így van jelölve: `(?<=...)`.
+A `(?<=(T|t)he\s)(fat|mat)` jelentése: szedd ki az összes `fat` vagy `mat` szót
+amelyek a `The` vagy a `the` szavak után vannak.
+
+
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/avH165/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/avH165/1)
+
+### 4.4 Negative Lookbehind
+### 4.4 Negative Lookbehind
+
+Negative lookbehind is used to get all the matches that are not preceded by a
+specific pattern. Negative lookbehind is denoted by `(?
+"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
+
+
+[Test the regular expression](https://regex101.com/r/8Efx5G/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/8Efx5G/1)
+
+## 5. Flags
+## 5. Flag-ek
+
+Flags are also called modifiers because they modify the output of a regular
+expression. These flags can be used in any order or combination, and are an
+integral part of the RegExp.
+
+A flag-eket módosítónak hívják, mert módosítják a reguláris kifejezés
+kimenetét. Ezeket a flag-eket bármilyen sorban vagy kombinációban lehet
+használni, a RegExp szerves részét képezik.
+
+|Flag|Description|
+|:----:|----|
+|i|Case insensitive: Sets matching to be case-insensitive.|
+|g|Global Search: Search for a pattern throughout the input string.|
+|m|Multiline: Anchor meta character works on each line.|
+
+|Flag|Leírás|
+|:----:|----|
+|i|Kis-nagybetű érzéketlen: Beállítja, hogy az illeszkedés kis-nagybetű érzéketlen legyen.|
+|g|Globális keresés: A bemeneti szövegben mindenütt keresi az illeszkedéseket.|
+|m|Többsoros: A horgonyok az összes sorra működnek.|
+
+### 5.1 Case Insensitive
+### 5.1 Kis-nagybetű érzéketlen
+
+The `i` modifier is used to perform case-insensitive matching. For example, the
+regular expression `/The/gi` means: uppercase letter `T`, followed by lowercase
+character `h`, followed by character `e`. And at the end of regular expression
+the `i` flag tells the regular expression engine to ignore the case. As you can
+see we also provided `g` flag because we want to search for the pattern in the
+whole input string.
+
+Az `i` módosító beállítja, hogy az illeszkedés ne legyen kis-nagybetű érzékeny.
+Például a `/The/gi` kifejezés jelentése: nagybetűs `T` amit kisbetűs `h`, majd `e`
+követ. A kifejezés végén az `i` megmondja a reguláris kifejezés motornak, hogy
+hagyja figyelmen kívül a betűk méretét. Ahogy látod, megadtuk a `g` flag-et, mert
+az egész bemeneti szövegben akarjuk keresni az illeszkedéseket.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/dpQyf9/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/dpQyf9/1)
+
+
+"/The/gi" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/ahfiuh/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/ahfiuh/1)
+
+### 5.2 Global search
+### 5.2 Globális keresés
+
+The `g` modifier is used to perform a global match (find all matches rather than
+stopping after the first match). For example, the regular expression`/.(at)/g`
+means: any character except new line, followed by lowercase character `a`,
+followed by lowercase character `t`. Because we provided `g` flag at the end of
+the regular expression now it will find all matches in the input string, not just the first one (which is the default behavior).
+
+A `g` módosítót arra használjuk, hogy globálisan keressünk illeszkedéseket.
+(Megkeresi az összes előfordulást, nem áll meg az első egyezés után). Például
+a `/.(at)/g` kifejezés jelentése: minden karakter, kivéve a sortörést, amelyet
+`a` és `t` követ. Mivel megadtuk a `g` flag-et, az összes ilyenre fog illeszkedni,
+nem csak az elsőre (ami az alapértelmezett viselkedés).
+
+
+"/.(at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/jnk6gM/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/jnk6gM/1)
+
+
+"/.(at)/g" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/dO1nef/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/dO1nef/1)
+
+### 5.3 Multiline
+### 5.3 Többsoros
+
+The `m` modifier is used to perform a multi-line match. As we discussed earlier
+anchors `(^, $)` are used to check if pattern is the beginning of the input or
+end of the input string. But if we want that anchors works on each line we use
+`m` flag. For example, the regular expression `/at(.)?$/gm` means: lowercase
+character `a`, followed by lowercase character `t`, optionally anything except
+new line. And because of `m` flag now regular expression engine matches pattern
+at the end of each line in a string.
+
+Az `m` módosítót a többsoros illeszkedésekhez használjuk. Ahogy előzőleg beszéltük,
+a horgonyokat `(^, $)` arra használjuk, hogy megnézzük, a minta az eleje, vagy a vége-e
+a vizsgált karakterláncnak. De ha azt szeretnénk, hogy a horgonyok az összes soron
+működjenek, használjuk az `m` módosítót. Például a `/at(.)?$/gm` kifejezés jelentése:
+kisbetűs `a` karakter, amit egy kisbetűs `t` követ, amit opcionálisan bármi követhet,
+kivéve sortörés. És az `m` flag miatt a reguláris kifejezés motor az összes sor
+végéig keres illeszkedést.
+
+
+"/.at(.)?$/" => The fat
+ cat sat
+ on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/hoGMkP/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/hoGMkP/1)
+
+
+"/.at(.)?$/gm" => The fat
+ cat sat
+ on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/E88WE2/1)
+[Teszteld a reguláris kifejezést](https://regex101.com/r/E88WE2/1)
+
+## Contribution
+## Hozzájárulás
+
+* Report issues
+* Open pull request with improvements
+* Spread the word
+* Reach out to me directly at ziishaned@gmail.com or [](https://twitter.com/ziishaned)
+
+* Jelents hibákat
+* Nyiss pull request-eket fejlesztésekkel
+* Hírdesd az igét
+* Érj el közvetlenül itt: ziishaned@gmail.com vagy [](https://twitter.com/ziishaned)
+
+## License
+## Licenc
+
+MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
diff --git a/img/regexp-hu.png b/img/regexp-hu.png
new file mode 100644
index 0000000000000000000000000000000000000000..70d1f516881f7a93647beb8fb680df08c95c235f
GIT binary patch
literal 35766
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
literal 0
HcmV?d00001
From 8caf03bceb3d40687889113bed5fb2cef2fb68be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Munk=C3=A1csi=20M=C3=A1rk?=
Date: Tue, 24 Oct 2017 23:10:13 +0200
Subject: [PATCH 010/162] typos
---
README-hu.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README-hu.md b/README-hu.md
index a0e08a2d..a198a9e5 100644
--- a/README-hu.md
+++ b/README-hu.md
@@ -30,7 +30,7 @@ replacing a text within a string, validating form, extract a substring from a
string based upon a pattern match, and so much more.
A reguláris kifejezés egy olyan minta, amely illeszkedik egy adott karakterláncra
-balról jobbra. Maga a "Regular expression" kifejezést általában rövidítve lehet
+balról jobbra. Magát a "Regular expression" kifejezést általában rövidítve lehet
megtalálni, mint "regex" vagy "regexp". A reguláris kifejezést használják szövegrészek
lecserélésére egy szövegben, űrlapok validálására, szövegrészek kiválasztására
mintaegyezés alapján egy hosszabb szövegből és így tovább.
@@ -193,8 +193,8 @@ szögletes zárójelek közé vannak téve. A meta karakterek a következők:
|(xyz)|Karakter csoport. Illeszkedik az xyz karakterekre pontosan ilyen sorrendben.|
|||Alternáció. Illeszkedik a szimbólum előtt és után álló karakterekre is.|
|\|Escape-li a következő karaktert. A segítségével lefoglalt karakterekre is lehet illeszkedni [ ] ( ) { } . * + ? ^ $ \ ||
-|^|A bevitel elejére illeszkedik.|
-|$|A bevitel végére illeszkedik.|
+|^|A karakterlánc elejére illeszkedik.|
+|$|A karakterlánc végére illeszkedik.|
## 2.1 Full stop
## 2.1 Full stop
@@ -620,7 +620,7 @@ by `$` character. Following are the lookarounds that are used in regular
expressions:
A lookbehind (hátranézés) és a lookahead (előrenézés) speciális típusai a
-***nem tárolt csoport***oknak, amiket illeszkedésre használnak, de nincsenek
+***nem tárolt csoport*** oknak, amiket illeszkedésre használnak, de nincsenek
benne az illeszkedési listában. Az előrenézést akkor használjuk, ha feltételezzük,
hogy ezt a mintát egy másik minta előzi meg, vagy követi. Például kell nekünk
az összes szám ami előtt `$` karakter áll a következő karakterláncból: `$4.44 and $10.88`.
From be9c737cdd6b9e6079a7620cab10079255db33be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Munk=C3=A1csi=20M=C3=A1rk?=
Date: Tue, 24 Oct 2017 23:22:28 +0200
Subject: [PATCH 011/162] removed english text
---
README-hu.md | 340 ---------------------------------------------------
1 file changed, 340 deletions(-)
diff --git a/README-hu.md b/README-hu.md
index a198a9e5..44ef5590 100644
--- a/README-hu.md
+++ b/README-hu.md
@@ -3,7 +3,6 @@
-## Translations:
## Fordítások:
* [English](README.md)
@@ -17,30 +16,16 @@
* [Greek](README-gr.md)
* [Magyar](README-hu.md)
-## What is Regular Expression?
## Mi az a reguláris kifejezés?
-> Regular expression is a group of characters or symbols which is used to find a specific pattern from a text.
> A reguláris kifejezés karakterek vagy szimbólumok egy csoportja, amelyet egy szövegből adott minták megtalálására használnak.
-A regular expression is a pattern that is matched against a subject string from
-left to right. The word "Regular expression" is a mouthful, you will usually
-find the term abbreviated as "regex" or "regexp". Regular expression is used for
-replacing a text within a string, validating form, extract a substring from a
-string based upon a pattern match, and so much more.
-
A reguláris kifejezés egy olyan minta, amely illeszkedik egy adott karakterláncra
balról jobbra. Magát a "Regular expression" kifejezést általában rövidítve lehet
megtalálni, mint "regex" vagy "regexp". A reguláris kifejezést használják szövegrészek
lecserélésére egy szövegben, űrlapok validálására, szövegrészek kiválasztására
mintaegyezés alapján egy hosszabb szövegből és így tovább.
-Imagine you are writing an application and you want to set the rules for when a
-user chooses their username. We want to allow the username to contain letters,
-numbers, underscores and hyphens. We also want to limit the number of characters
-in username so it does not look ugly. We use the following regular expression to
-validate a username:
-
Képzeld el, hogy egy alkalmazást írsz és szeretnél szabályokat állítani a felhasználónév
kiválasztásához. A felhasználónév csak betűket, számokat, aláhúzásjelet és kötőjelet
tartalmazhat. Szeretnénk limitálni a karakterek maximális számát is a felhasználónévben,
@@ -49,48 +34,15 @@ használjuk:
-
-Above regular expression can accept the strings `john_doe`, `jo-hn_doe` and
-`john12_as`. It does not match `Jo` because that string contains uppercase
-letter and also it is too short.
-
A feljebbi reguláris kifejezés elfogadja a `john_doe`, `jo-hn_doe` és a
`john12_as` karakterláncokat. Nem fog egyezni a `Jo`-ra mert ez nagybetűt
tartalmaz és túl rövid is.
-## Table of Contents
## Tartalomjegyzék
-- [Basic Matchers](#1-basic-matchers)
-- [Meta character](#2-meta-characters)
- - [Full stop](#21-full-stop)
- - [Character set](#22-character-set)
- - [Negated character set](#221-negated-character-set)
- - [Repetitions](#23-repetitions)
- - [The Star](#231-the-star)
- - [The Plus](#232-the-plus)
- - [The Question Mark](#233-the-question-mark)
- - [Braces](#24-braces)
- - [Character Group](#25-character-group)
- - [Alternation](#26-alternation)
- - [Escaping special character](#27-escaping-special-character)
- - [Anchors](#28-anchors)
- - [Caret](#281-caret)
- - [Dollar](#282-dollar)
-- [Shorthand Character Sets](#3-shorthand-character-sets)
-- [Lookaround](#4-lookaround)
- - [Positive Lookahead](#41-positive-lookahead)
- - [Negative Lookahead](#42-negative-lookahead)
- - [Positive Lookbehind](#43-positive-lookbehind)
- - [Negative Lookbehind](#44-negative-lookbehind)
-- [Flags](#5-flags)
- - [Case Insensitive](#51-case-insensitive)
- - [Global search](#52-global-search)
- - [Multiline](#53-multiline)
-
- [Bevezetés](#1-basic-matchers)
- [Meta karakterek](#2-meta-characters)
- [Full stop](#21-full-stop)
@@ -118,13 +70,8 @@ tartalmaz és túl rövid is.
- [Globális keresés](#52-global-search)
- [Többsoros](#53-multiline)
-## 1. Basic Matchers
## 1. Bevezetés
-A regular expression is just a pattern of characters that we use to perform
-search in a text. For example, the regular expression `the` means: the letter
-`t`, followed by the letter `h`, followed by the letter `e`.
-
A reguláris kifejezés egy karakterminta, amit keresésre használunk egy
szövegben. Például a `the` reguláris kifejezés a következőt jelenti: egy `t` betű,
amit `h` követ, amit egy `e` követ.
@@ -133,15 +80,8 @@ amit `h` követ, amit egy `e` követ.
"the" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/dmRygT/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/dmRygT/1)
-The regular expression `123` matches the string `123`. The regular expression is
-matched against an input string by comparing each character in the regular
-expression to each character in the input string, one after another. Regular
-expressions are normally case-sensitive so the regular expression `The` would
-not match the string `the`.
-
Az `123` reguláris kifejezés illeszkedik a `123` karakterláncra. A reguláris kifejezés
minden egyes karaktere össze lesz hasonlítva a bevitt karakterlánc minden elemével
egymás után. A reguláris kifejezések alap esetben kis-nagybetű érzékenyek, tehát a
@@ -151,36 +91,14 @@ egymás után. A reguláris kifejezések alap esetben kis-nagybetű érzékenyek
"The" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/1paXsy/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/1paXsy/1)
-## 2. Meta Characters
## 2. Meta karakterek
-Meta characters are the building blocks of the regular expressions. Meta
-characters do not stand for themselves but instead are interpreted in some
-special way. Some meta characters have a special meaning and are written inside
-square brackets. The meta characters are as follows:
-
A meta karakterek a reguláris kifejezések építőkockái. A meta karakterek speciális
módon értelmezendőek. Némelyik meta karakternek speciális jelentése van és
szögletes zárójelek közé vannak téve. A meta karakterek a következők:
-|Meta character|Description|
-|:----:|----|
-|.|Period matches any single character except a line break.|
-|[ ]|Character class. Matches any character contained between the square brackets.|
-|[^ ]|Negated character class. Matches any character that is not contained between the square brackets|
-|*|Matches 0 or more repetitions of the preceding symbol.|
-|+|Matches 1 or more repetitions of the preceding symbol.|
-|?|Makes the preceding symbol optional.|
-|{n,m}|Braces. Matches at least "n" but not more than "m" repetitions of the preceding symbol.|
-|(xyz)|Character group. Matches the characters xyz in that exact order.|
-|||Alternation. Matches either the characters before or the characters after the symbol.|
-|\|Escapes the next character. This allows you to match reserved characters [ ] ( ) { } . * + ? ^ $ \ ||
-|^|Matches the beginning of the input.|
-|$|Matches the end of the input.|
-
|Meta karakter|Leírás|
|:----:|----|
|.|A pont illeszkedik minden egyes karakterre kivéve a sortörést.|
@@ -197,12 +115,6 @@ szögletes zárójelek közé vannak téve. A meta karakterek a következők:
|$|A karakterlánc végére illeszkedik.|
## 2.1 Full stop
-## 2.1 Full stop
-
-Full stop `.` is the simplest example of meta character. The meta character `.`
-matches any single character. It will not match return or newline characters.
-For example, the regular expression `.ar` means: any character, followed by the
-letter `a`, followed by the letter `r`.
A full stop `.` a legegyszerűbb meta karakter példa. A `.` meta karakter illeszkedik
minden egyes karakterre. Nem fog illeszkedni a kocsi vissza és a sortörés karakterekre.
@@ -212,18 +124,10 @@ Például a `.ar` reguláris kifejezés jelentése: minden karakter, amit `a` az
".ar" => The car parked in the garage.
-[Test the regular expression](https://regex101.com/r/xc9GkU/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/xc9GkU/1)
-## 2.2 Character set
## 2.2 Karakter osztályok
-Character sets are also called character class. Square brackets are used to
-specify character sets. Use a hyphen inside a character set to specify the
-characters' range. The order of the character range inside square brackets
-doesn't matter. For example, the regular expression `[Tt]he` means: an uppercase
-`T` or lowercase `t`, followed by the letter `h`, followed by the letter `e`.
-
A szögletes zárójelekkel határozzuk meg a karakter osztályokat. A szögletes
zárójelek közt kötőjel karakterrel határozhatunk meg karakter tartományokat.
A karaktertartomány sorrendje nem számít. Például a `[Tt]he` reguláris kifejezés
@@ -233,13 +137,8 @@ jelentése: nagybetűs `T` vagy kisbetűs `t` amit egy `h` majd egy `e` betű k
"[Tt]he" => The car parked in the garage.
-[Test the regular expression](https://regex101.com/r/2ITLQ4/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/2ITLQ4/1)
-A period inside a character set, however, means a literal period. The regular
-expression `ar[.]` means: a lowercase character `a`, followed by letter `r`,
-followed by a period `.` character.
-
Egy pont a karakter osztályon belül egyébként szó szerint pont-ot jelent. A
`ar[.]` reguláris kifejezés jelentése: kisbetűs `a` amit egy `r` aztán egy
pont `.` karakter követ.
@@ -248,17 +147,10 @@ pont `.` karakter követ.
"ar[.]" => A garage is a good place to park a car.
-[Test the regular expression](https://regex101.com/r/wL3xtE/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/wL3xtE/1)
-### 2.2.1 Negated character set
### 2.2.1 Negált karakter osztályok
-In general, the caret symbol represents the start of the string, but when it is
-typed after the opening square bracket it negates the character set. For
-example, the regular expression `[^c]ar` means: any character except `c`,
-followed by the character `a`, followed by the letter `r`.
-
Általában a kalap szimbólum egy karakterlánc elejét jelenti, de ha egy nyitó
szögletes zárójel után áll, akkor negálja a karakter osztályt. Például a
`[^c]ar` reguláris kifejezés jelentése: minden karakter a `c` kivételével
@@ -268,29 +160,16 @@ ami után `a` aztán egy `r` betű áll.
"[^c]ar" => The car parked in the garage.
-[Test the regular expression](https://regex101.com/r/nNNlq3/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/nNNlq3/1)
-## 2.3 Repetitions
## 2.3 Ismétlések
-Following meta characters `+`, `*` or `?` are used to specify how many times a
-subpattern can occur. These meta characters act differently in different
-situations.
-
A következő meta karaktereket `+`, `*` vagy `?` arra használjuk, hogy meghatározzuk,
hányszor fordulhat elő az al-minta. Ezek a meta karakterek máshogy viselkednek
adott helyzetekben.
-### 2.3.1 The Star
### 2.3.1 A csillag
-The symbol `*` matches zero or more repetitions of the preceding matcher. The
-regular expression `a*` means: zero or more repetitions of preceding lowercase
-character `a`. But if it appears after a character set or class then it finds
-the repetitions of the whole character set. For example, the regular expression
-`[a-z]*` means: any number of lowercase letters in a row.
-
A `*` szimbólum az őt megelőző karakter nulla vagy több ismétlődésére illeszkedik.
A `a*` reguláris kifejezés jelentése: nulla vagy több ismétlődése az őt megelőző `a`
karakternek. De ha egy karakter osztály után áll akkor az egész karakterosztály
@@ -301,16 +180,8 @@ kisbetűs betű egy sorban.
"[a-z]*" => The car parked in the garage #21.
-[Test the regular expression](https://regex101.com/r/7m8me5/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/7m8me5/1)
-The `*` symbol can be used with the meta character `.` to match any string of
-characters `.*`. The `*` symbol can be used with the whitespace character `\s`
-to match a string of whitespace characters. For example, the expression
-`\s*cat\s*` means: zero or more spaces, followed by lowercase character `c`,
-followed by lowercase character `a`, followed by lowercase character `t`,
-followed by zero or more spaces.
-
A `*` szimbólum használható a `.` meta karakterrel `.*`, ez illeszkedik
bármilyen karakterláncra. A `*` szimbólum használható a whitespace karakterrel `\s`
együtt, hogy illeszkedjen egy whitespace-ekből álló karakterláncra. Például a
@@ -321,17 +192,10 @@ aztán egy kisbetűs `a`, aztán egy kisbetűs `t`, amit még nulla vagy több s
"\s*cat\s*" => The fat cat sat on the concatenation.
-[Test the regular expression](https://regex101.com/r/gGrwuz/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/gGrwuz/1)
-### 2.3.2 The Plus
### 2.3.2 A plusz
-The symbol `+` matches one or more repetitions of the preceding character. For
-example, the regular expression `c.+t` means: lowercase letter `c`, followed by
-at least one character, followed by the lowercase character `t`. It needs to be
-clarified that `t` is the last `t` in the sentence.
-
A `+` szimbólum illeszkedik az őt megelőző karakter egy vagy több ismétlődésére.
Például a `c.+t` kifejezés jelentése: kisbetűs `c` betű, amit legalább egy vagy
több `t` követ. Itt tisztázni kell hogy a `t` az utolsó `t` a mondatban.
@@ -340,18 +204,10 @@ több `t` követ. Itt tisztázni kell hogy a `t` az utolsó `t` a mondatban.
"c.+t" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/Dzf9Aa/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/Dzf9Aa/1)
-### 2.3.3 The Question Mark
### 2.3.3 A kérdőjel
-In regular expression the meta character `?` makes the preceding character
-optional. This symbol matches zero or one instance of the preceding character.
-For example, the regular expression `[T]?he` means: Optional the uppercase
-letter `T`, followed by the lowercase character `h`, followed by the lowercase
-character `e`.
-
A reguláris kifejezésben a `?` meta karakter opcionálissá teszi az őt
megelőző karaktert. Ez a szimbólum az őt megelőző karakter nulla vagy egy
példányára illeszkedik. Például a `[T]?he` kifejezés jelentése: opcionális a
@@ -361,24 +217,16 @@ nagybetűs `T`, amit egy kisbetűs `h`, majd egy kisbetűs `e` követ.
"[T]he" => The car is parked in the garage.
-[Test the regular expression](https://regex101.com/r/cIg9zm/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/cIg9zm/1)
"[T]?he" => The car is parked in the garage.
-[Test the regular expression](https://regex101.com/r/kPpO2x/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/kPpO2x/1)
-## 2.4 Braces
## 2.4 A kapcsos zárójelek
-In regular expression braces that are also called quantifiers are used to
-specify the number of times that a character or a group of characters can be
-repeated. For example, the regular expression `[0-9]{2,3}` means: Match at least
-2 digits but not more than 3 ( characters in the range of 0 to 9).
-
A reguláris kifejezésben a kapcsos zárójeleket annak meghatározására használjuk,
hogy egy karakter vagy egy karakter csoport hányszor ismétlődhet. Például a
`[0-9]{2,3}` kifejezés jelentése: minimum 2 de nem több mint 3 karakter a `[0-9]`
@@ -388,13 +236,8 @@ karaktertartományon belül.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
-[Test the regular expression](https://regex101.com/r/juM86s/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/juM86s/1)
-We can leave out the second number. For example, the regular expression
-`[0-9]{2,}` means: Match 2 or more digits. If we also remove the comma the
-regular expression `[0-9]{3}` means: Match exactly 3 digits.
-
Kihagyhatjuk a második számot. Például a `[0-9]{2,}` kifejezés jelentése:
2 vagy több számra illeszkedik. Ha a vesszőt is kitöröljük `[0-9]{3}`: Pontosan
3 számra illeszkedik.
@@ -403,28 +246,16 @@ Kihagyhatjuk a második számot. Például a `[0-9]{2,}` kifejezés jelentése:
"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
-[Test the regular expression](https://regex101.com/r/Gdy4w5/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/Gdy4w5/1)
"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
-[Test the regular expression](https://regex101.com/r/Sivu30/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/Sivu30/1)
-## 2.5 Character Group
## 2.5 Karakter csoportok
-Character group is a group of sub-patterns that is written inside Parentheses `(...)`.
-As we discussed before that in regular expression if we put a quantifier after a
-character then it will repeat the preceding character. But if we put quantifier
-after a character group then it repeats the whole character group. For example,
-the regular expression `(ab)*` matches zero or more repetitions of the character
-"ab". We can also use the alternation `|` meta character inside character group.
-For example, the regular expression `(c|g|p)ar` means: lowercase character `c`,
-`g` or `p`, followed by character `a`, followed by character `r`.
-
A karakter csoport al-minták csoportja amik zárójelek közé `(...)` vannak írva.
Ahogy előbb már megbeszéltük, ha egy karakter után ismétlő karaktert rakunk, az
ismételni fogja az előtte lévő karaktert. De ha egy ismétlő karaktert egy karakter
@@ -438,22 +269,10 @@ egy `r` karakter követ.
"(c|g|p)ar" => The car is parked in the garage.
-[Test the regular expression](https://regex101.com/r/tUxrBG/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/tUxrBG/1)
-## 2.6 Alternation
## 2.6 Alternálás
-In regular expression Vertical bar `|` is used to define alternation.
-Alternation is like a condition between multiple expressions. Now, you may be
-thinking that character set and alternation works the same way. But the big
-difference between character set and alternation is that character set works on
-character level but alternation works on expression level. For example, the
-regular expression `(T|t)he|car` means: uppercase character `T` or lowercase
-`t`, followed by lowercase character `h`, followed by lowercase character `e` or
-lowercase character `c`, followed by lowercase character `a`, followed by
-lowercase character `r`.
-
A reguláris kifejezésben a függőleges vonalat `|` alternálásra (választásra)
használjuk. Az alternálás olyan, mint egy feltétel több kifejezés közt. Most
azt gondolhatod, hogy a karakter osztály és az alternáció ugyan úgy működik.
@@ -466,28 +285,15 @@ egy `e` követ, VAGY kisbetűs `c` aztán `a` aztán `r` karakter.
"(T|t)he|car" => The car is parked in the garage.
-[Test the regular expression](https://regex101.com/r/fBXyX0/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/fBXyX0/1)
-## 2.7 Escaping special character
## 2.7 Speciális karakter escape-elése
-Backslash `\` is used in regular expression to escape the next character. This
-allows us to specify a symbol as a matching character including reserved
-characters `{ } [ ] / \ + * . $ ^ | ?`. To use a special character as a matching
-character prepend `\` before it.
-
A visszaper `\` a reguláris kifejezésekben a következő karakter escape-elésére
való. Ez enged nekünk szimbólumokat vagy lefoglalt karaktereket `{ } [ ] / \ + * . $ ^ | ?`
megadni. Egy speciális karakter egyező karakterként való megadásához tedd elé
a `\` karaktert.
-For example, the regular expression `.` is used to match any character except
-newline. Now to match `.` in an input string the regular expression
-`(f|c|m)at\.?` means: lowercase letter `f`, `c` or `m`, followed by lowercase
-character `a`, followed by lowercase letter `t`, followed by optional `.`
-character.
-
Például a `.` kifejezést az összes karakter, kivéve a sortörés illeszkedéséhez
használjuk. A `(f|c|m)at\.?` kifejezés jelentése: kisbetűs `f`, `c` vagy `m`, amit
egy kisbetűs `a` aztán egy kisbetűs `t`, amit egy opcionális `.` karakter követ.
@@ -496,36 +302,18 @@ egy kisbetűs `a` aztán egy kisbetűs `t`, amit egy opcionális `.` karakter k
"(f|c|m)at\.?" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/DOc5Nu/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/fBXyX0/1)
-## 2.8 Anchors
## 2.8 Horgonyok
-In regular expressions, we use anchors to check if the matching symbol is the
-starting symbol or ending symbol of the input string. Anchors are of two types:
-First type is Caret `^` that check if the matching character is the start
-character of the input and the second type is Dollar `$` that checks if matching
-character is the last character of the input string.
-
A reguláris kifejezésekben horgonyokat használunk, hogy megnézzük, az illeszkedő
szimbólum a kezdő vagy a záró szimbóluma-e a karakterláncnak. A horgonyoknak két
fajtájuk van: Az első a Kalap `^`, ami megnézi, hogy az egyező karakter a karakterlánc
kezdő kerektere-e és a második a Dollár `$`, ami azt vizsgálja, hogy az egyező
karakter a karakterlánc utolsó karaktere-e.
-### 2.8.1 Caret
### 2.8.1 Kalap
-Caret `^` symbol is used to check if matching character is the first character
-of the input string. If we apply the following regular expression `^a` (if a is
-the starting symbol) to input string `abc` it matches `a`. But if we apply
-regular expression `^b` on above input string it does not match anything.
-Because in input string `abc` "b" is not the starting symbol. Let's take a look
-at another regular expression `^(T|t)he` which means: uppercase character `T` or
-lowercase character `t` is the start symbol of the input string, followed by
-lowercase character `h`, followed by lowercase character `e`.
-
A kalap `^` szimbólumot arra használjuk, hogy megnézzük, hogy az egyező karakter
a karakterlánc kezdő kerektere-e. Ha megadjuk a következő kifejezést: `^a`,
akkor illeszkedik a `abc` karakterlánc `a` karakterére, mert az za első. De ha
@@ -538,24 +326,16 @@ nagybetűs `T` vagy kisbetűs `t` a kezdő karaktere a karakterláncnak, amit ki
"(T|t)he" => The car is parked in the garage.
-[Test the regular expression](https://regex101.com/r/5ljjgB/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/5ljjgB/1)
"^(T|t)he" => The car is parked in the garage.
-[Test the regular expression](https://regex101.com/r/jXrKne/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/jXrKne/1)
-### 2.8.2 Dollar
### 2.8.2 Dollár
-Dollar `$` symbol is used to check if matching character is the last character
-of the input string. For example, regular expression `(at\.)$` means: a
-lowercase character `a`, followed by lowercase character `t`, followed by a `.`
-character and the matcher must be end of the string.
-
A dollár `$` szimbólumot arra használjuk, hogy megnézzük, hogy az egyező
karakter a karakterlánc utolsó karaktere-e. Például a `(at\.)$` kifejezés
jelentése: egy kisbetűs `a`, amit egy kisbetűs `t`, amit egy `.` követ. És
@@ -565,37 +345,20 @@ ennek az egésznek a karakterlánc végén kell lennie.
"(at\.)" => The fat cat. sat. on the mat.
-[Test the regular expression](https://regex101.com/r/y4Au4D/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/y4Au4D/1)
"(at\.)$" => The fat cat. sat. on the mat.
-[Test the regular expression](https://regex101.com/r/t0AkOd/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/t0AkOd/1)
-## 3. Shorthand Character Sets
## 3. Shorthand Karakter osztályok
-Regular expression provides shorthands for the commonly used character sets,
-which offer convenient shorthands for commonly used regular expressions. The
-shorthand character sets are as follows:
-
A gyakran használt karakter osztályokra a reguláris kifejezésnek vannak
rövidítései, amikkel kényelmesebben tudunk használni általános kifejezéseket.
A shorthand karakter osztályok a következők:
-|Shorthand|Description|
-|:----:|----|
-|.|Any character except new line|
-|\w|Matches alphanumeric characters: `[a-zA-Z0-9_]`|
-|\W|Matches non-alphanumeric characters: `[^\w]`|
-|\d|Matches digit: `[0-9]`|
-|\D|Matches non-digit: `[^\d]`|
-|\s|Matches whitespace character: `[\t\n\f\r\p{Z}]`|
-|\S|Matches non-whitespace character: `[^\s]`|
-
|Rövidítés|Leírás|
|:----:|----|
|.|Minden karakter a sortörésen kívül.|
@@ -606,19 +369,8 @@ A shorthand karakter osztályok a következők:
|\s|Whitespace karakterre illeszkedik: `[\t\n\f\r\p{Z}]`|
|\S|Nem whitespace karakterre illeszkedik: `[^\s]`|
-## 4. Lookaround
## 4. Lookaround
-Lookbehind and lookahead (also called lookaround) are specific types of
-***non-capturing groups*** (Used to match the pattern but not included in matching
-list). Lookaheads are used when we have the condition that this pattern is
-preceded or followed by another certain pattern. For example, we want to get all
-numbers that are preceded by `$` character from the following input string
-`$4.44 and $10.88`. We will use following regular expression `(?<=\$)[0-9\.]*`
-which means: get all the numbers which contain `.` character and are preceded
-by `$` character. Following are the lookarounds that are used in regular
-expressions:
-
A lookbehind (hátranézés) és a lookahead (előrenézés) speciális típusai a
***nem tárolt csoport*** oknak, amiket illeszkedésre használnak, de nincsenek
benne az illeszkedési listában. Az előrenézést akkor használjuk, ha feltételezzük,
@@ -628,13 +380,6 @@ Ezt a mintát fogjuk használni: `(?<=\$)[0-9\.]*`, aminek a jelentése: Szedd k
összes számot ami `.` karaktert tartalmaz és megelőzi egy `$` karakter. A
következő lookaround-okat használhatjuk:
-|Symbol|Description|
-|:----:|----|
-|?=|Positive Lookahead|
-|?!|Negative Lookahead|
-|?<=|Positive Lookbehind|
-|? The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/IDDARt/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/IDDARt/1)
### 4.2 Negative Lookahead
-### 4.2 Negative Lookahead
-
-Negative lookahead is used when we need to get all matches from input string
-that are not followed by a pattern. Negative lookahead is defined same as we define
-positive lookahead but the only difference is instead of equal `=` character we
-use negation `!` character i.e. `(?!...)`. Let's take a look at the following
-regular expression `(T|t)he(?!\sfat)` which means: get all `The` or `the` words
-from input string that are not followed by the word `fat` precedes by a space
-character.
A negatív előrenézést akkor használjuk, ha az olyan illeszkedések kellenek,
amelyeket nem követ egy bizonyos minta. A negatív előrenézést ugyanúgy
@@ -696,16 +419,9 @@ egy szóköz).
"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/V32Npg/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/V32Npg/1)
### 4.3 Positive Lookbehind
-### 4.3 Positive Lookbehind
-
-Positive lookbehind is used to get all the matches that are preceded by a
-specific pattern. Positive lookbehind is denoted by `(?<=...)`. For example, the
-regular expression `(?<=(T|t)he\s)(fat|mat)` means: get all `fat` or `mat` words
-from input string that are after the word `The` or `the`.
A pozitív hátranézést akkor használjuk, ha kell az összes illeszkedés, amit
egy megadott minta előz meg. A pozitív hátranézés így van jelölve: `(?<=...)`.
@@ -716,16 +432,9 @@ amelyek a `The` vagy a `the` szavak után vannak.
"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/avH165/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/avH165/1)
### 4.4 Negative Lookbehind
-### 4.4 Negative Lookbehind
-
-Negative lookbehind is used to get all the matches that are not preceded by a
-specific pattern. Negative lookbehind is denoted by `(? The cat sat on cat.
-[Test the regular expression](https://regex101.com/r/8Efx5G/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/8Efx5G/1)
-## 5. Flags
## 5. Flag-ek
-Flags are also called modifiers because they modify the output of a regular
-expression. These flags can be used in any order or combination, and are an
-integral part of the RegExp.
-
A flag-eket módosítónak hívják, mert módosítják a reguláris kifejezés
kimenetét. Ezeket a flag-eket bármilyen sorban vagy kombinációban lehet
használni, a RegExp szerves részét képezik.
-|Flag|Description|
-|:----:|----|
-|i|Case insensitive: Sets matching to be case-insensitive.|
-|g|Global Search: Search for a pattern throughout the input string.|
-|m|Multiline: Anchor meta character works on each line.|
-
|Flag|Leírás|
|:----:|----|
|i|Kis-nagybetű érzéketlen: Beállítja, hogy az illeszkedés kis-nagybetű érzéketlen legyen.|
|g|Globális keresés: A bemeneti szövegben mindenütt keresi az illeszkedéseket.|
|m|Többsoros: A horgonyok az összes sorra működnek.|
-### 5.1 Case Insensitive
### 5.1 Kis-nagybetű érzéketlen
-The `i` modifier is used to perform case-insensitive matching. For example, the
-regular expression `/The/gi` means: uppercase letter `T`, followed by lowercase
-character `h`, followed by character `e`. And at the end of regular expression
-the `i` flag tells the regular expression engine to ignore the case. As you can
-see we also provided `g` flag because we want to search for the pattern in the
-whole input string.
-
Az `i` módosító beállítja, hogy az illeszkedés ne legyen kis-nagybetű érzékeny.
Például a `/The/gi` kifejezés jelentése: nagybetűs `T` amit kisbetűs `h`, majd `e`
követ. A kifejezés végén az `i` megmondja a reguláris kifejezés motornak, hogy
@@ -782,25 +471,16 @@ az egész bemeneti szövegben akarjuk keresni az illeszkedéseket.
"The" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/dpQyf9/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/dpQyf9/1)
"/The/gi" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/ahfiuh/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/ahfiuh/1)
-### 5.2 Global search
### 5.2 Globális keresés
-The `g` modifier is used to perform a global match (find all matches rather than
-stopping after the first match). For example, the regular expression`/.(at)/g`
-means: any character except new line, followed by lowercase character `a`,
-followed by lowercase character `t`. Because we provided `g` flag at the end of
-the regular expression now it will find all matches in the input string, not just the first one (which is the default behavior).
-
A `g` módosítót arra használjuk, hogy globálisan keressünk illeszkedéseket.
(Megkeresi az összes előfordulást, nem áll meg az első egyezés után). Például
a `/.(at)/g` kifejezés jelentése: minden karakter, kivéve a sortörést, amelyet
@@ -811,27 +491,16 @@ nem csak az elsőre (ami az alapértelmezett viselkedés).
"/.(at)/" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/jnk6gM/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/jnk6gM/1)
"/.(at)/g" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/dO1nef/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/dO1nef/1)
-### 5.3 Multiline
### 5.3 Többsoros
-The `m` modifier is used to perform a multi-line match. As we discussed earlier
-anchors `(^, $)` are used to check if pattern is the beginning of the input or
-end of the input string. But if we want that anchors works on each line we use
-`m` flag. For example, the regular expression `/at(.)?$/gm` means: lowercase
-character `a`, followed by lowercase character `t`, optionally anything except
-new line. And because of `m` flag now regular expression engine matches pattern
-at the end of each line in a string.
-
Az `m` módosítót a többsoros illeszkedésekhez használjuk. Ahogy előzőleg beszéltük,
a horgonyokat `(^, $)` arra használjuk, hogy megnézzük, a minta az eleje, vagy a vége-e
a vizsgált karakterláncnak. De ha azt szeretnénk, hogy a horgonyok az összes soron
@@ -846,7 +515,6 @@ végéig keres illeszkedést.
on the mat.
-[Test the regular expression](https://regex101.com/r/hoGMkP/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/hoGMkP/1)
@@ -855,23 +523,15 @@ végéig keres illeszkedést.
on the mat.
-[Test the regular expression](https://regex101.com/r/E88WE2/1)
[Teszteld a reguláris kifejezést](https://regex101.com/r/E88WE2/1)
-## Contribution
## Hozzájárulás
-* Report issues
-* Open pull request with improvements
-* Spread the word
-* Reach out to me directly at ziishaned@gmail.com or [](https://twitter.com/ziishaned)
-
* Jelents hibákat
* Nyiss pull request-eket fejlesztésekkel
* Hírdesd az igét
* Érj el közvetlenül itt: ziishaned@gmail.com vagy [](https://twitter.com/ziishaned)
-## License
## Licenc
MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
From ec60f531e5a831f070cab059b6ea36e88f7f33df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Munk=C3=A1csi=20M=C3=A1rk?=
Date: Tue, 24 Oct 2017 23:33:17 +0200
Subject: [PATCH 012/162] hungarian table of contents fixed
---
README-hu.md | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/README-hu.md b/README-hu.md
index 44ef5590..92a57fb9 100644
--- a/README-hu.md
+++ b/README-hu.md
@@ -43,32 +43,32 @@ tartalmaz és túl rövid is.
## Tartalomjegyzék
-- [Bevezetés](#1-basic-matchers)
-- [Meta karakterek](#2-meta-characters)
+- [Bevezetés](#1-bevezetés)
+- [Meta karakterek](#2-meta-karakterek)
- [Full stop](#21-full-stop)
- - [Karakter osztályok](#22-character-set)
- - [Negált karakter osztályok](#221-negated-character-set)
- - [Ismétlések](#23-repetitions)
- - [A csillag](#231-the-star)
- - [A plusz](#232-the-plus)
- - [A kérdőjel](#233-the-question-mark)
- - [A kapcsos zárójelek](#24-braces)
- - [Karakter csoportok](#25-character-group)
- - [Alternálás](#26-alternation)
- - [Speciális karakter escape-elése](#27-escaping-special-character)
- - [Horgonyok](#28-anchors)
- - [Kalap](#281-caret)
- - [Dollár](#282-dollar)
-- [Shorthand Karakter osztályok](#3-shorthand-character-sets)
+ - [Karakter osztályok](#22-karakter-osztályok)
+ - [Negált karakter osztályok](#221-negált-karakter-osztályok)
+ - [Ismétlések](#23-ismétlések)
+ - [A csillag](#231-a-csillag)
+ - [A plusz](#232-a-plusz)
+ - [A kérdőjel](#233-a-kérdőjel)
+ - [A kapcsos zárójelek](#24-a-kapcsos-zárójelek)
+ - [Karakter csoportok](#25-karakter-csoportok)
+ - [Alternálás](#26-alternálás)
+ - [Speciális karakter escape-elése](#27-speciális-karakter-escape-elése)
+ - [Horgonyok](#28-horgonyok)
+ - [Kalap](#281-kalap)
+ - [Dollár](#282-dollár)
+- [Shorthand Karakter osztályok](#3-shorthand-karakter-osztályok)
- [Lookaround](#4-lookaround)
- [Positive Lookahead](#41-positive-lookahead)
- [Negative Lookahead](#42-negative-lookahead)
- [Positive Lookbehind](#43-positive-lookbehind)
- [Negative Lookbehind](#44-negative-lookbehind)
-- [Flag-ek](#5-flags)
- - [Kis-nagybetű érzéketlen](#51-case-insensitive)
- - [Globális keresés](#52-global-search)
- - [Többsoros](#53-multiline)
+- [Flag-ek](#5-flag-ek)
+ - [Kis-nagybetű érzéketlen](#51-kis-nagybetű-érzéketlen)
+ - [Globális keresés](#52-globális-keresés)
+ - [Többsoros](#53-többsoros)
## 1. Bevezetés
From 86e51f7baad389ddf34bf62e31fbcb8e085c9160 Mon Sep 17 00:00:00 2001
From: donpepe0
Date: Wed, 20 Dec 2017 17:27:14 +0100
Subject: [PATCH 013/162] Polish translation (#105)
* introdution and p.1 translated
* introdution and p.1 translated
* 2.3 translated
* 2.8.1 translated
* 3. translated
* all text translated
* image translated, and replaced
* fixed link in context tabe
---
README-cn.md | 1 +
README-es.md | 1 +
README-fr.md | 1 +
README-gr.md | 1 +
README-ja.md | 1 +
README-ko.md | 1 +
README-pl.md | 533 ++++++++++++++++++++++++++++++++++++++++++++++
README-pt_BR.md | 1 +
README-tr.md | 1 +
README.md | 1 +
img/regexp-pl.png | Bin 0 -> 20204 bytes
11 files changed, 542 insertions(+)
create mode 100644 README-pl.md
create mode 100644 img/regexp-pl.png
diff --git a/README-cn.md b/README-cn.md
index add4168c..0f7e9b81 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## 什么是正则表达式?
diff --git a/README-es.md b/README-es.md
index 48d54da2..3f59d662 100644
--- a/README-es.md
+++ b/README-es.md
@@ -14,6 +14,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## Qué es una expresión regular?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
diff --git a/README-fr.md b/README-fr.md
index 6e7c65d6..8216394d 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## Qu'est-ce qu'une expression régulière?
diff --git a/README-gr.md b/README-gr.md
index 8fb7da26..935f0827 100644
--- a/README-gr.md
+++ b/README-gr.md
@@ -14,6 +14,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## Τι είναι μια Κανονική Έκφραση (Regular Expression);
diff --git a/README-ja.md b/README-ja.md
index 126cde8a..af9d8b3a 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## 正規表現とは
diff --git a/README-ko.md b/README-ko.md
index 7d0097ea..e3029d0f 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## 정규표현식이란 무엇인가?
diff --git a/README-pl.md b/README-pl.md
new file mode 100644
index 00000000..28622c42
--- /dev/null
+++ b/README-pl.md
@@ -0,0 +1,533 @@
+
+
+
+
+
+## Tłumaczenia:
+
+* [English](README.md)
+* [Español](README-es.md)
+* [Français](README-fr.md)
+* [Português do Brasil](README-pt_BR.md)
+* [中文版](README-cn.md)
+* [日本語](README-ja.md)
+* [한국어](README-ko.md)
+* [Turkish](README-tr.md)
+* [Greek](README-gr.md)
+* [Polish](README-pl.md)
+
+## Co to jest wyrażenie regularne?
+
+> Wyrażenie regularne to grupa znaków lub symboli, które służą do odnalezienia określonego wzoru w tekście.
+
+Wyrażenie regularne to wzorzec, który jest dopasowywany do tekstu od lewej
+do prawej strony. Termin "wyrażenie regularne" (ang. "regular expression")
+jest dość długie, więc zazwyczaj używa się skróconej formy "regex" lub "regexp".
+Wyrażenie regularne jest używane do zastępowania tekstu w łańcuchu znaków
+(ang. string), walidacji formularzy, wyodrębniania wycinka z łańcucha
+(ang. substring) według podanego wzorca, i wielu innych.
+
+Wyobraź sobie, że piszesz aplikację i chcesz ustawić reguły dotyczące tego,
+jak użytkownik wybiera swoją nazwę. Chcemy, aby nazwa użytkownika zawierała litery,
+liczby, podkreślenia i myślniki. Chcemy również ograniczyć liczbę znaków w nazwie
+użytkownika, aby nie wyglądała za brzydko. Stosujemy następujące wyrażenie
+regularne, aby sprawdzić poprawność nazwy:
+
+
+
+
+
+
+Powyższe wyrażenie akceptuje łańcuchy `john_doe`, `jo-hn_doe`
+i `john12_as`. Odrzuca `Jo` ponieważ łańcuch zawiera dużą literę
+i jest za krótki.
+
+## Spis treści
+
+- [Najprostsze wyrażenie](#1-najprostsze-wyrażenie)
+- [Metaznaki](#2-metaznaki)
+ - [Kropka](#21-kropka)
+ - [Zestaw znaków](#22-zestaw-znaków)
+ - [Odwrócony zestaw znaków](#221-odwrócony-zestaw-znaków)
+ - [Powtórzenia](#23-powtórzenia)
+ - [Gwiazdka](#231-gwiazdka)
+ - [Plus](#232-plus)
+ - [Znak zapytania](#233-znak-zapytania)
+ - [Klamry](#24-klamry)
+ - [Grupa znaków](#25-grupa-znaków)
+ - [Alternatywa](#26-alternatywa)
+ - [Znak ucieczki](#27-znak-ucieczki)
+ - [Kotwice](#28-kotwice)
+ - [Kareta](#281-kareta)
+ - [Dolar](#282-dolar)
+- [Skróty](#3-skróty)
+- [Lookaround](#4-lookaround)
+ - [Lookahead](#41-lookahead)
+ - [Odwrócony lookahead](#42-odwrócony-lookahead)
+ - [Lookbehind](#43-lookbehind)
+ - [Odwrócony lookbehind](#44-odwrócony-lookbehind)
+- [Flagi](#5-flagi)
+ - [Wielkość znaków](#51-wielkość-znaków)
+ - [Przeszukiwanie globalne](#52-przeszukiwanie-globalne)
+ - [Multilinia](#53-multilinia)
+
+## 1. Najprostsze wyrażenie
+
+Wyrażenie regularne to ciąg znaków, których używamy do przeszukania tekstu.
+Na przykład, wyrażenie `the` oznacza: literę `t`, następującą
+po niej literę `h`, następującą po niej literę `e`.
+
+
+"the" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/dmRygT/1)
+
+Wyrażenie regularne `123` pasuje do łańcucha `123`. Wyrażenie regularne
+jest dopasowywane do danego łańcucha poprzez porównanie każdego znaku,
+jeden po drugim, w wyrażeniu i łańcuchu. Wyrażenia są zwykle wrażliwe
+na wielkość znaków, więc wyrażenie `The` nie pasuje do łańcucha `the`.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/1paXsy/1)
+
+## 2. Metaznaki
+
+Metaznaki to składowe elementy wyrażeń regularnych. Znaki te, nie oznaczają
+siebie samych, są natomiast interpretowane w specjalny sposób.
+Niektóre znaki mają specjalne znaczenie i są zapisywane w kwadratowych nawiasach.
+Metaznaki to:
+
+|Metaznaki|Opis|
+|:----:|----|
+|.|Dowolny znak z wyjątkiem nowej linii.|
+|[ ]|Zakres. Każdy znak zapisany w kwadratowym nawiasie.|
+|[^ ]|Odwrócony zakres. Każdy znak, który nie znajduje się w kwadratowym nawiasie.|
+|*|0 lub więcej poprzedzających znaków.|
+|+|1 lub więcej poprzedzających znaków.|
+|?|0 lub 1 poprzedzających znaków.|
+|{n,m}|Minimum "n" ale nie więcej niż "m" poprzedzających znaków.|
+|(xyz)|Grupowanie znaków. Znaki xyz dokładnie w tej kolejności.|
+|||Alternatywa. Znaki przed symbolem lub za symbolem.|
+|\|Znak ucieczki. Umożliwia używanie zarezerwowanych znaków [ ] ( ) { } . * + ? ^ $ \ |.|
+|^|Oznacza początek wzorca.|
+|$|Oznacza koniec wzorca.|
+
+## 2.1 Kropka
+
+Kropka `.` jest najprostszym przykładem metaznaku. Oznacza dowolny znak z wyłączeniem entera
+i znaków nowej linii. Na przykład, wyrażenie regularne `.ar` oznacza: dowolny znak, następującą
+po niej literę `a`, następującą po niej literę `r`.
+
+
+".ar" => The car parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/xc9GkU/1)
+
+## 2.2 Zestaw znaków
+
+Zestawy znaków nazywane też klasami znaków. Nawiasy kwadratowe służą do określenia zestawów znaków.
+Użycie myślnika wewnątrz zestawu, określa jego zakres. Kolejność znaków w nawiasach kwadratowych
+nie ma znaczenia. Na przykład wyrażenie `[Tt]he` oznacza: dużą literę `T` lub małą `t`,
+następującą po niej literę `h`, następującą po niej literę `e`.
+
+
+"[Tt]he" => The car parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/2ITLQ4/1)
+
+Jednak kropka w zestawie znaków, oznacza dosłownie kropkę. Wyrażenie regularne
+`ar[.]` oznacza: małą literę `a`, następującą po niej literę `r`,
+następującą po niej `.` kropkę.
+
+
+"ar[.]" => A garage is a good place to park a car.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/wL3xtE/1)
+
+### 2.2.1 Odwrócony zestaw znaków
+
+Generalnie znak karety oznacza początek wyrażenia, ale gdy zostanie użyty zaraz
+za otwierającym nawiasem kwadratowym, odwraca zestaw znaków. Na przykład
+wyrażenie `[^c]ar` oznacza: każdy znak z wyjątkiem `c`,
+następującą po niej literę `a`, następującą po niej literę `r`.
+
+
+"[^c]ar" => The car parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/nNNlq3/1)
+
+## 2.3 Powtórzenia
+
+Następujące metaznaki `+`, `*` czy `?` określają ile razy wzorzec może się powtórzyć.
+Te metaznaki zachowują się różnie, w zależności od sytuacji.
+
+### 2.3.1 Gwiazdka
+
+Symbol `*` oznacza zero lub więcej powtórzeń poprzedzających znaków. Wyrażenie
+regularne `a*` oznacza: zero lub więcej powtórzeń poprzedzającej małej
+litery `a`. Ale jeśli występuje po zestawie znaków lub klasie, to oznacza
+powtórzenia całego zestawu lub klasy. Na przykład, wyrażenie regularne
+`[a-z]*` oznacza: każdy ciąg znaków pisany małymi literami.
+
+
+"[a-z]*" => The car parked in the garage #21.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/7m8me5/1)
+
+Symbol `*` może być użyty z metaznakiem `.` by oznaczyć każdy łańcuch
+znaków `.*`. Symbol `*` może być użyty ze znakiem `\s`
+by znaleźć łańcuch zawierający spacje. Na przykład, wyrażenie
+`\s*cat\s*` oznacza: zero lub więcej spacji, następującą po niej małą literę `c`,
+następującą po niej małą literę `a`, następującą po niej małą literę `t`,
+następujące po niej zero lub więcej spacji.
+
+
+"\s*cat\s*" => The fat cat sat on the concatenation.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/gGrwuz/1)
+
+### 2.3.2 Plus
+
+Symbol `+` oznacza jeden lub więcej powtórzeń poprzedzających znaków. Na przykład,
+wyrażenie `c.+t` oznacza: małą literę `c`, następujący po niej przynajmniej jeden
+dowolny znak, następującą po nim małą literę `t`. W tym wypadku `t` jest ostatnim
+`t` w zdaniu.
+
+
+"c.+t" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/Dzf9Aa/1)
+
+### 2.3.3 Znak zapytania
+
+W wyrażeniach regularnych znak `?` sprawia, że poprzedzający znak jest opcjonalny.
+Ten symbol oznacza zero lub jedno wystąpienie poprzedzającego znaku. Na przykład,
+wyrażenie regularne `[T]?he` oznacza: opcjonalną dużą literę `T`, następującą
+po niej małą literę `h`, następującą po niej małą literę `e`.
+
+
+"[T]he" => The car is parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/cIg9zm/1)
+
+
+"[T]?he" => The car is parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/kPpO2x/1)
+
+## 2.4 Klamry
+
+W wyrażeniach regularnych, klamry zwane również kwantyfikatorami, używane są
+do określenia, ile razy znak lub grupa znaków może się powtórzyć.
+Na przykład wyrażenie regularne `[0-9]{2,3}` oznacza: przynajmniej
+2 znaki, ale nie więcej niż 3 (znaki z zakresu od 0 do 9).
+
+
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/juM86s/1)
+
+Możemy opuścić drugą liczbę. Na przykład regularne wyrażenie `[0-9]{2,}`
+oznacza: 2 lub więcej znaków. Jeżeli dodatkowo usuniemy przecinek,
+to wyrażenie `[0-9]{3}` oznacza: dokładnie 3 znaki z zakresu 0 do 9.
+
+
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/Gdy4w5/1)
+
+
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/Sivu30/1)
+
+## 2.5 Grupa znaków
+
+Grupa znaków to grupa podwzorców, które zapisywane są w nawiasach `(...)`.
+Jak wspominaliśmy wyżej, jeśli w wyrażeniu regularnym wstawimy kwantyfikator po
+znaku, wtedy powtórzy on ten znak. Ale gdy wstawimy kwantyfikator po grupie znaków,
+wtedy cała grupa zostanie powtórzona. Na przykład wyrażenie regularne `(ab)*`
+oznacza zero lub więcej powtórzeń grupy "ab". Możemy także użyć metaznaku
+alternatywy `|` wewnątrz grupy. Na przykład wyrażenie `(c|g|p)ar` oznacza: małą literę `c`,
+`g` lub `p`, następującą po niej literę `a`, następującą po niej literę `r`.
+
+
+"(c|g|p)ar" => The car is parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/tUxrBG/1)
+
+## 2.6 Alternatywa
+
+W wyrażeniach regularnych pionowa kreska `|` oznacza alternatywę.
+Działa jak warunek pomiędzy różnymi wyrażeniami. Teraz możesz pomyśleć, że
+to działa tak samo jak zestaw znaków. Różnica polega na tym, że zestaw znaków
+działa na poziomie znaków, natomiast alternatywa na poziomie wyrażenia. Na przykład
+wyrażenie regularne `(T|t)he|car` oznacza: dużą literę `T` lub małą `t`,
+następującą po niej literę `h`, następującą po niej literę `e` lub `c`, następującą
+po niej literę `a`, następującą po niej literę `r`.
+
+
+"(T|t)he|car" => The car is parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/fBXyX0/1)
+
+## 2.7 Znak ucieczki
+
+Ukośnik `\` w wyrażeniach regularnych jest znakiem ucieczki. Pozwala on
+używać w wyrażeniu zarezerwowanych znaków takich jak `{ } [ ] / \ + * . $ ^ | ?`.
+Aby użyć znaku specjalnego w wyrażeniu, postaw `\` przed nim.
+
+Na przykład wyrażenie `.` dopasowuje każdy znak z wyjątkiem nowej linii.
+Żeby dopasować kropkę `.` w wyrażeniu regularnym, trzeba wstawić przed nią ukośnik.
+Wyrażenie `(f|c|m)at\.?` oznacza: małe litery `f` lub `c` lub `m`, następującą po niej
+literę `a`, następującą po niej literę `t`, następującą kropkę `.`, która jest opcjonalna.
+
+
+"(f|c|m)at\.?" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/DOc5Nu/1)
+
+## 2.8 Kotwice
+
+W wyrażeniach regularnych używamy kotwic aby sprawdzić czy dopasowywany symbol
+jest pierwszym lub ostatnim symbolem w łańcuchu. Są dwa typy: pierwszy to
+kareta `^`, która sprawdza czy znak jest początkiem łańcucha, drugi to dolar `$`,
+który sprawdza czy znak jest ostatnim elementem łańcucha.
+
+### 2.8.1 Kareta
+
+Kareta `^` sprawdza czy znak jest początkiem łańcucha. Jeżeli użyjemy takiego
+wyrażenia `^a` (jeśli a jest pierwszym znakiem) na łańcuchu `abc` to dopasuje
+nam `a`. Ale jeśli użyjemy takiego wyrażenia `^b` na tym samym łańcuchu, to nie
+zwróci nam nic. Ponieważ w łańcuchu `abc` "b" nie jest pierwszym symbolem.
+Spójrzmy teraz na wyrażenie `^(T|t)he` które oznacza: dużą literę `T` lub małą
+`t`, która jest początkiem łańcucha, następującą po niej literę `h`, następującą
+po niej literę `e`.
+
+
+"(T|t)he" => The car is parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/5ljjgB/1)
+
+
+"^(T|t)he" => The car is parked in the garage.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/jXrKne/1)
+
+### 2.8.2 Dolar
+
+Symbol dolara `$` używany jest do sprawdzenia czy dopasowywany znak jest ostatni
+w łańcuchu. Na przykład, wyrażenie regularne `(at\.)$` oznacza: małą literę `a`,
+następującą po niej literę `t`, następującą po niej kropkę `.` i na dodatek
+dopasowanie musi być końcem łańcucha.
+
+
+"(at\.)" => The fat cat. sat. on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/y4Au4D/1)
+
+
+"(at\.)$" => The fat cat. sat. on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/t0AkOd/1)
+
+## 3. Skróty
+
+W wyrażeniach regularnych znajdziemy także skróty dla popularnych zestawów znaków,
+które ułatwiają pracę z wyrażeniami regularnymi. Skróty wyglądają następująco:
+
+|Skrót|Opis|
+|:----:|----|
+|.|Każdy znak z wyjątkiem nowej linii|
+|\w|Znaki alfanumeryczne: `[a-zA-Z0-9_]`|
+|\W|Znaki nie alfanumeryczne: `[^\w]`|
+|\d|Cyfry: `[0-9]`|
+|\D|Nie cyfry: `[^\d]`|
+|\s|Dowolny biały znak: `[\t\n\f\r\p{Z}]`|
+|\S|Każdy znak oprócz białych: `[^\s]`|
+
+## 4. Lookaround
+
+Lookbehind i lookahead (nazywane również lookaround) to specyficzne typy
+***niezwracających grup*** (dopasowują wzorzec, ale nie zwracają wartości).
+Lookaround używane są w sytuacji, gdy mamy wzorzec i jest on poprzedzony innym wzorcem,
+lub następuje po nim kolejny wzorzec. Na przykład, chcemy mieć wszystkie
+numery, które są poprzedzone znakiem `$` w takim łańcuchu `$4.44 and $10.88`.
+Użyjemy takiego wyrażenia regularnego `(?<=\$)[0-9\.]*` które oznacza: znajdź
+wszystkie liczby ze znakiem `.` poprzedzone znakiem `$`. W wyrażeniach regularnych
+wyróżniamy:
+
+|Symbol|Opis|
+|:----:|----|
+|?=|Lookahead|
+|?!|Odwrócony lookahead|
+|?<=|Lookbehind|
+|?
+"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/IDDARt/1)
+
+### 4.2 Odwrócony lookahead
+
+Używany jest, gdy potrzebujemy dopasowania z łańcucha, po których nie następują
+żadne wzorce. Odwrócony lookahead definiujemy w nawiasach, stosując znak negacji
+`!` po znaku zapytania, na przykład: `(?!...)`. Popatrzmy na następujące wyrażenie
+`(T|t)he(?!\sfat)` które oznacza: znajdź wszystkie słowa `The` lub `the` w łańcuchu,
+po których nie następuje słowo `fat`, poprzedzone spacją.
+
+
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/V32Npg/1)
+
+### 4.3 Lookbehind
+
+Lookbehind używany jest do odnalezienia wszystkich dopasowań poprzedzonych konkretnym
+wzorcem. Wyrażenie lookbehind zapisujemy tak: `(?<=...)`. Na przykład, wyrażenie
+`(?<=(T|t)he\s)(fat|mat)` oznacza: znajdź wszystkie słowa `fat` lub `mat` w łańcuchu,
+które znajdują się po słowach `The` lub `the`.
+
+
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/avH165/1)
+
+### 4.4 Odwrócony lookbehind
+
+Odwrócony używany jest do odnalezienia wszystkich dopasowań niepoprzedzonych konkretnym
+wzorcem. Odwrócony lookbehind zapisujemy tak: `(?
+"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/8Efx5G/1)
+
+## 5. Flagi
+
+Flagi nazywane są także modyfikatorami, ponieważ zmieniają wynik wyrażenia regularnego.
+Flagi mogą być używane w każdej kombinacji i są integralną częścią wyrażeń regularnych.
+
+|Flaga|Opis|
+|:----:|----|
+|i|Wielkość znaków: Sprawia, że dopasowanie nie jest wrażliwe na wielkość znaków.|
+|g|Przeszukanie globalne: Wyszukiwanie wzorca w całym łańcuchu.|
+|m|Multilinia: Sprawia, że kotwice działają na każdej linii.|
+
+### 5.1 Wielkość znaków
+
+Modyfikator `i` używany jest, gdy wielkość liter nie ma znaczenia. Na przykład
+wyrażenie `/The/gi` oznacza: dużą literę `T`, następującą po niej literę `h`,
+następującą po niej literę `e`. A na końcu wyrażenia, flaga `i` żeby ignorować
+wielkość znaków. Jak widać, została też użyta flaga `g` ponieważ chcemy przeszukać
+cały łańcuch.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/dpQyf9/1)
+
+
+"/The/gi" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/ahfiuh/1)
+
+### 5.2 Przeszukiwanie globalne
+
+Modyfikator `g` używany jest do przeszukiwania całego łańcucha (znajdź wszystko,
+a nie tylko zatrzymuj się na pierwszym). Na przykład wyrażenie `/.(at)/g`
+oznacza: każdy znak z wyjątkiem nowej linii, następującą po nim literę `a`,
+następującą po niej literę `t`. Ponieważ użyliśmy na końcu wyrażenia flagi `g`,
+wyszukane zostaną wszystkie dopasowania w łańcuchu, a nie tylko pierwszy (domyślne zachowanie).
+
+
+"/.(at)/" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/jnk6gM/1)
+
+
+"/.(at)/g" => The fat cat sat on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/dO1nef/1)
+
+### 5.3 Multilinia
+
+Modyfikator `m` używany jest do dopasowywania w wielu liniach. Jak wspominaliśmy
+wcześniej, kotwice `(^, $)` używane są do sprawdzania czy wzorzec jest początkiem
+lub końcem łańcucha. Jeśli chcemy, żeby kotwice zadziałały w każdej linii, używamy
+wtedy flagi `m`. Na przykład wyrażenie `/at(.)?$/gm` oznacza: małą literę `a`,
+następującą po niej małą literę `t`, opcjonalnie dowolny znak z wyjątkiem nowej linii.
+I ponieważ użyliśmy flagi `m` dopasowywane będą wzorce na końcu każdej linii w łańcuchu.
+
+
+"/.at(.)?$/" => The fat
+ cat sat
+ on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/hoGMkP/1)
+
+
+"/.at(.)?$/gm" => The fat
+ cat sat
+ on the mat.
+
+
+[Przetestuj wyrażenie](https://regex101.com/r/E88WE2/1)
+
+## Kontrybucja
+
+* Zgłaszanie błędów
+* Otwieranie pull request z poprawkami
+* Dzielenie się poradnikiem
+* Skontaktuj się ze mną ziishaned@gmail.com lub [](https://twitter.com/ziishaned)
+
+## Licencja
+
+MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
diff --git a/README-pt_BR.md b/README-pt_BR.md
index de90728d..791c48c2 100644
--- a/README-pt_BR.md
+++ b/README-pt_BR.md
@@ -13,6 +13,7 @@
* [日本語](README-ja.md)
* [한국어](README-ko.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## O que é uma Expressão Regular?
diff --git a/README-tr.md b/README-tr.md
index 956e85ea..718849bd 100644
--- a/README-tr.md
+++ b/README-tr.md
@@ -13,6 +13,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## Düzenli İfade Nedir?
diff --git a/README.md b/README.md
index 443973e3..29f1d4cd 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@
* [한국어](README-ko.md)
* [Turkish](README-tr.md)
* [Greek](README-gr.md)
+* [Polish](README-pl.md)
## What is Regular Expression?
diff --git a/img/regexp-pl.png b/img/regexp-pl.png
new file mode 100644
index 0000000000000000000000000000000000000000..5da2cd423c715a7ca33f218c5918d70345868398
GIT binary patch
literal 20204
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
literal 0
HcmV?d00001
From 1fa0fa7786f815cf2d11e9f6bfee615e85fcaefb Mon Sep 17 00:00:00 2001
From: Amey Joshi
Date: Mon, 25 Dec 2017 00:19:53 -0500
Subject: [PATCH 014/162] #103 Add greedy vs lazy matching (#104)
---
README.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/README.md b/README.md
index 29f1d4cd..82add6e0 100644
--- a/README.md
+++ b/README.md
@@ -540,6 +540,23 @@ at the end of each line in a string.
[Test the regular expression](https://regex101.com/r/E88WE2/1)
+## 6. Greedy vs lazy matching
+By default regex will do greedy matching , means it will match as long as
+possible. we can use `?` to match in lazy way means as short as possible
+
+
+"/(.*at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/AyAdgJ/1)
+
+
+"/(.*?at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/AyAdgJ/2)
+
+
## Contribution
* Report issues
From f489ee2cc0fc224394c3945be74176c16017e237 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Mon, 25 Dec 2017 10:22:36 +0500
Subject: [PATCH 015/162] Update table of contents
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 82add6e0..de9ac4ff 100644
--- a/README.md
+++ b/README.md
@@ -69,6 +69,7 @@ letter and also it is too short.
- [Case Insensitive](#51-case-insensitive)
- [Global search](#52-global-search)
- [Multiline](#53-multiline)
+- [Greedy vs lazy matching](#6-greedy-vs-lazy-matching)
## 1. Basic Matchers
From aeecdc154a834948e23566cffe4175f3de13ab47 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 13 Jan 2018 22:13:55 +0400
Subject: [PATCH 016/162] Fix typo
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index de9ac4ff..f89d1cc1 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ followed by lowercase character `a`, followed by lowercase character `t`,
followed by zero or more spaces.
-"\s*cat\s*" => The fat cat sat on the concatenation.
+"\s*cat\s*" => The fat cat sat on the concatenation.
[Test the regular expression](https://regex101.com/r/gGrwuz/1)
From ef6abcb2cfdcb724ad10a7d41d1007210767f351 Mon Sep 17 00:00:00 2001
From: Hello World
Date: Fri, 19 Jan 2018 16:00:05 +0800
Subject: [PATCH 017/162] Fix Chinese translation error (#107)
---
README-cn.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README-cn.md b/README-cn.md
index 0f7e9b81..5899a10a 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -454,7 +454,7 @@
像之前介绍的 `(^,$)` 用于检查格式是否是在待检测字符串的开头或结尾. 但我们如果想要它在每行的开头和结尾生效, 我们需要用到多行修饰符 `m`.
-例如, 表达式 `/at(.)?$/gm` 表示在待检测字符串每行的末尾搜索 `at`后跟一个或多个 `.` 的字符串, 并返回全部结果.
+例如, 表达式 `/at(.)?$/gm` 表示小写字符 `a` 后跟小写字符 `t` , 末尾可选除换行符外任意字符. 根据 `m` 修饰符, 现在表达式匹配每行的结尾.
"/.at(.)?$/" => The fat
From 755ae62bff06891ad2f0764f45e9cb852926ad96 Mon Sep 17 00:00:00 2001
From: EdgarAllanzp
Date: Tue, 30 Jan 2018 12:30:10 +0800
Subject: [PATCH 018/162] fix example error at section Greedy vs lazy matching.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f89d1cc1..d49c725e 100644
--- a/README.md
+++ b/README.md
@@ -546,7 +546,7 @@ By default regex will do greedy matching , means it will match as long as
possible. we can use `?` to match in lazy way means as short as possible
-"/(.*at)/" => The fat cat sat on the mat.
+"/(.*at)/" => The fat cat sat on the mat.
[Test the regular expression](https://regex101.com/r/AyAdgJ/1)
From 6d5c34d90678b168af9b0b33fcc6ca2415974fbe Mon Sep 17 00:00:00 2001
From: Edgarli
Date: Tue, 30 Jan 2018 14:03:26 +0800
Subject: [PATCH 019/162] fix example error at section Greedy vs lazy matching.
(#109)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index f89d1cc1..d49c725e 100644
--- a/README.md
+++ b/README.md
@@ -546,7 +546,7 @@ By default regex will do greedy matching , means it will match as long as
possible. we can use `?` to match in lazy way means as short as possible
-"/(.*at)/" => The fat cat sat on the mat.
+"/(.*at)/" => The fat cat sat on the mat.
[Test the regular expression](https://regex101.com/r/AyAdgJ/1)
From 30d0fa33ef4bc14abeda92c0230092e569bf069d Mon Sep 17 00:00:00 2001
From: EdgarAllanzp
Date: Tue, 30 Jan 2018 18:02:12 +0800
Subject: [PATCH 020/162] Chinese translation at section 'Greedy vs lazy
matching'.
---
README-cn.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/README-cn.md b/README-cn.md
index 5899a10a..f31fdf7c 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -472,6 +472,21 @@
[在线练习](https://regex101.com/r/E88WE2/1)
+### 6. 贪婪匹配与惰性匹配 (Greedy vs lazy matching)
+
+正则表达式默认采用贪婪匹配模式,在该模式下意味着会匹配尽可能长的子串。我们可以使用 `?` 将贪婪匹配模式转化为惰性匹配模式。
+
+
+"/(.*at)/" => The fat cat sat on the mat.
+
+[在线练习](https://regex101.com/r/AyAdgJ/1)
+
+
+"/(.*?at)/" => The fat cat sat on the mat.
+
+
+[在线练习](https://regex101.com/r/AyAdgJ/2)
+
## 贡献
* 报告问题
From 9ed1a20b215c7621b54018c1e4e589dc35980805 Mon Sep 17 00:00:00 2001
From: "yeongjun.kim"
Date: Fri, 16 Mar 2018 15:30:41 +0900
Subject: [PATCH 021/162] Translate 'Greedy vs lazy matching' into korean
---
README-ko.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/README-ko.md b/README-ko.md
index e3029d0f..413c5a0b 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -59,6 +59,7 @@
- [대소문자 구분없음](#51-대소문자-구분없음)
- [전체 검색](#52-전체-검색)
- [멀티 라인](#53-멀티-라인)
+ - [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른 매칭)
## 1. 기본 매쳐
@@ -401,6 +402,22 @@
[Test the regular expression](https://regex101.com/r/E88WE2/1)
+## 6. 탐욕적 vs 게으른 매칭
+기본적으로 정규 표현식은 탐욕적(greedy) 매칭을 수행하는데, 이는 가능한 한 길게 매칭하는 것을 의미한다.
+우리는 `?`를 사용하여 게으른(lazy) 방법 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
+
+
+"/(.*at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/AyAdgJ/1)
+
+
+"/(.*?at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/AyAdgJ/2)
+
## 기여 방법
* 이슈 리포팅
From eed5d788230e8b9eaff92d3c5eb08e8cf40517e5 Mon Sep 17 00:00:00 2001
From: "yeongjun.kim"
Date: Fri, 16 Mar 2018 17:08:22 +0900
Subject: [PATCH 022/162] Fix toc link
- fix incorrectly link in toc
- modify sentence in section 6
---
README-ko.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README-ko.md b/README-ko.md
index 413c5a0b..02678b22 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -59,7 +59,7 @@
- [대소문자 구분없음](#51-대소문자-구분없음)
- [전체 검색](#52-전체-검색)
- [멀티 라인](#53-멀티-라인)
- - [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른 매칭)
+- [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른-매칭)
## 1. 기본 매쳐
@@ -404,7 +404,7 @@
## 6. 탐욕적 vs 게으른 매칭
기본적으로 정규 표현식은 탐욕적(greedy) 매칭을 수행하는데, 이는 가능한 한 길게 매칭하는 것을 의미한다.
-우리는 `?`를 사용하여 게으른(lazy) 방법 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
+우리는 `?`를 사용하여 게으른(lazy) 방법으로 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
"/(.*at)/" => The fat cat sat on the mat.
From 0d20c325e5f0b907b8ca32330664914ac15edebf Mon Sep 17 00:00:00 2001
From: webber
Date: Tue, 27 Mar 2018 19:30:57 +0200
Subject: [PATCH 023/162] Add more context to (non) capturing groups
Changed 2.5 to reflect the following changes:
- Character group is now named capturing group
- Capturing group is given proper context of its usage (initial text)
- Non-capturing group is now described as per #16.
---
README.md | 33 +++++++++++++++++++++++++++------
1 file changed, 27 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index ffd6e9c4..9b36ad19 100644
--- a/README.md
+++ b/README.md
@@ -263,14 +263,14 @@ regular expression `[0-9]{3}` means: Match exactly 3 digits.
[Test the regular expression](https://regex101.com/r/Sivu30/1)
-## 2.5 Character Group
+## 2.5 Capturing Group
-Character group is a group of sub-patterns that is written inside Parentheses `(...)`.
-As we discussed before that in regular expression if we put a quantifier after a
-character then it will repeat the preceding character. But if we put quantifier
-after a character group then it repeats the whole character group. For example,
+A capturing group is a group of sub-patterns that is written inside Parentheses
+`(...)`. Like As we discussed before that in regular expression if we put a quantifier
+after a character then it will repeat the preceding character. But if we put quantifier
+after a capturing group then it repeats the whole capturing group. For example,
the regular expression `(ab)*` matches zero or more repetitions of the character
-"ab". We can also use the alternation `|` meta character inside character group.
+"ab". We can also use the alternation `|` meta character inside capturing group.
For example, the regular expression `(c|g|p)ar` means: lowercase character `c`,
`g` or `p`, followed by character `a`, followed by character `r`.
@@ -280,6 +280,27 @@ For example, the regular expression `(c|g|p)ar` means: lowercase character `c`,
[Test the regular expression](https://regex101.com/r/tUxrBG/1)
+Note that capturing groups do not only match but also capture the characters for use in
+the parent language. The parent language could be python or javascript or virtually any
+language that implements regular expressions in a function definition.
+
+### 2.5.1 Non-capturing group
+
+A non-capturing group is a capturing group that only matches the characters, but
+does not capture the group. A non-capturing group is denoted by a `?` followed by a `:`
+within parenthesis `(...)`. For example, the regular expression `(?:c|g|p)ar` is similar to
+`(c|g|p)ar` in that it matches the same characters but will not create a capture group.
+
+
+"(?:c|g|p)ar" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/Rm7Me8/1)
+
+Non-capturing groups can come in handy when used in find-and-replace functionality or
+when mixed with capturing groups to keep the overview when producing any other kind of output.
+See also [4. Lookaround](# 4. Lookaround).
+
## 2.6 Alternation
In regular expression Vertical bar `|` is used to define alternation.
From 3142822931c86ee8fa68e639399353d6d3492bb2 Mon Sep 17 00:00:00 2001
From: Josh Byster <8664074+josh-byster@users.noreply.github.com>
Date: Sat, 23 Jun 2018 00:03:22 -0500
Subject: [PATCH 024/162] Clarified alternation
---
README.md | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index 9b36ad19..e4d3561b 100644
--- a/README.md
+++ b/README.md
@@ -303,15 +303,16 @@ See also [4. Lookaround](# 4. Lookaround).
## 2.6 Alternation
-In regular expression Vertical bar `|` is used to define alternation.
-Alternation is like a condition between multiple expressions. Now, you may be
+In a regular expression, the vertical bar `|` is used to define alternation.
+Alternation is like an OR statement between multiple expressions. Now, you may be
thinking that character set and alternation works the same way. But the big
difference between character set and alternation is that character set works on
character level but alternation works on expression level. For example, the
-regular expression `(T|t)he|car` means: uppercase character `T` or lowercase
-`t`, followed by lowercase character `h`, followed by lowercase character `e` or
-lowercase character `c`, followed by lowercase character `a`, followed by
-lowercase character `r`.
+regular expression `(T|t)he|car` means: either (uppercase character `T` or lowercase
+`t`, followed by lowercase character `h`, followed by lowercase character `e`) OR
+(lowercase character `c`, followed by lowercase character `a`, followed by
+lowercase character `r`). Note that I put the parentheses for clarity, to show that either expression
+in parentheses can be met and it will match.
"(T|t)he|car" => The car is parked in the garage.
From da41a9d2970d7b7e57fd2c923f5ffa2721205f76 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Mon, 16 Jul 2018 17:29:33 +0400
Subject: [PATCH 025/162] Revert "Fix toc link"
---
README-ko.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README-ko.md b/README-ko.md
index c5016322..a740acfd 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -60,7 +60,7 @@
- [대소문자 구분없음](#51-대소문자-구분없음)
- [전체 검색](#52-전체-검색)
- [멀티 라인](#53-멀티-라인)
-- [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른-매칭)
+ - [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른 매칭)
## 1. 기본 매쳐
@@ -405,7 +405,7 @@
## 6. 탐욕적 vs 게으른 매칭
기본적으로 정규 표현식은 탐욕적(greedy) 매칭을 수행하는데, 이는 가능한 한 길게 매칭하는 것을 의미한다.
-우리는 `?`를 사용하여 게으른(lazy) 방법으로 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
+우리는 `?`를 사용하여 게으른(lazy) 방법 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
"/(.*at)/" => The fat cat sat on the mat.
From e11b2c9134403f5a77a348df06f4e658c4f17769 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Fri, 28 Sep 2018 23:31:05 +0400
Subject: [PATCH 026/162] Fix typos
---
.gitignore | 1 +
LICENSE | 2 +-
README-cn.md | 2 +-
README-es.md | 2 +-
README-fr.md | 2 +-
README-gr.md | 2 +-
README-hu.md | 2 +-
README-ja.md | 2 +-
README-ko.md | 2 +-
README-pl.md | 2 +-
README-pt_BR.md | 2 +-
README-tr.md | 2 +-
README-zh-simple.md | 2 +-
README.md | 2 +-
14 files changed, 14 insertions(+), 13 deletions(-)
create mode 100644 .gitignore
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..600d2d33
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.vscode
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 78bf0689..de523bdf 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2017 Zeeshan Ahmed
+Copyright (c) 2017 Zeeshan Ahmad
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README-cn.md b/README-cn.md
index 2d996cb1..e1e4eb5e 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -497,4 +497,4 @@
## 许可证
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-es.md b/README-es.md
index 19d5e5a8..8026ee5d 100644
--- a/README-es.md
+++ b/README-es.md
@@ -467,4 +467,4 @@ el motor de expresión regular coincide con el patrón al final de cada línea d
## Licencia
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-fr.md b/README-fr.md
index 2af7fe25..e0354beb 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -468,4 +468,4 @@ Grâce au drapeau `m` maintenant le moteur d'expression régulière trouve le sc
## License
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-gr.md b/README-gr.md
index 30da6a4b..b480e9a3 100644
--- a/README-gr.md
+++ b/README-gr.md
@@ -551,4 +551,4 @@ string με βάση κάποιου μοτίβου αναζήτησης και
## License
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-hu.md b/README-hu.md
index 92a57fb9..770a61f3 100644
--- a/README-hu.md
+++ b/README-hu.md
@@ -534,4 +534,4 @@ végéig keres illeszkedést.
## Licenc
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-ja.md b/README-ja.md
index bdfec3a4..b5ed321a 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -520,4 +520,4 @@
## ライセンス
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-ko.md b/README-ko.md
index a740acfd..777c76d6 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -428,4 +428,4 @@
## 라이센스
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-pl.md b/README-pl.md
index 28622c42..a5ef17c0 100644
--- a/README-pl.md
+++ b/README-pl.md
@@ -530,4 +530,4 @@ I ponieważ użyliśmy flagi `m` dopasowywane będą wzorce na końcu każdej li
## Licencja
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-pt_BR.md b/README-pt_BR.md
index e1f6df7a..0942e5c3 100644
--- a/README-pt_BR.md
+++ b/README-pt_BR.md
@@ -410,4 +410,4 @@ O modificador `m` é usado para realizar uma busca em várias linhas. Como falam
## Licença
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-tr.md b/README-tr.md
index 1dfbf7c6..fe40116b 100644
--- a/README-tr.md
+++ b/README-tr.md
@@ -478,4 +478,4 @@ Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak içi
## License
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README-zh-simple.md b/README-zh-simple.md
index 2ae80013..83de5b82 100644
--- a/README-zh-simple.md
+++ b/README-zh-simple.md
@@ -485,4 +485,4 @@
## 许可证
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
diff --git a/README.md b/README.md
index e4d3561b..6f52a703 100644
--- a/README.md
+++ b/README.md
@@ -590,4 +590,4 @@ possible. we can use `?` to match in lazy way means as short as possible
## License
-MIT © [Zeeshan Ahmed](mailto:ziishaned@gmail.com)
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
From 6909472cd391d8add49f7e7db8759ac0fb29a803 Mon Sep 17 00:00:00 2001
From: BigBadJohn562 <44328380+BigBadJohn562@users.noreply.github.com>
Date: Mon, 22 Oct 2018 11:03:20 -0700
Subject: [PATCH 027/162] Wording and Sentence Structure Changes
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 6f52a703..89844ef4 100644
--- a/README.md
+++ b/README.md
@@ -22,10 +22,10 @@
> Regular expression is a group of characters or symbols which is used to find a specific pattern from a text.
A regular expression is a pattern that is matched against a subject string from
-left to right. The word "Regular expression" is a mouthful, you will usually
-find the term abbreviated as "regex" or "regexp". Regular expression is used for
-replacing a text within a string, validating form, extract a substring from a
-string based upon a pattern match, and so much more.
+left to right. Regular expression is used for replacing a text within a string,
+validating form, extract a substring from a string based upon a pattern match,
+and so much more. The word "Regular expression" is a mouthful, so you will usually
+find the term abbreviated as "regex" or "regexp".
Imagine you are writing an application and you want to set the rules for when a
user chooses their username. We want to allow the username to contain letters,
From 780ab9bd69bd36676cc501da503e414a3cd5c10f Mon Sep 17 00:00:00 2001
From: Lucky Ozoka
Date: Mon, 26 Nov 2018 21:30:35 +0100
Subject: [PATCH 028/162] Replace lookaheads with lookarounds in definition of
lookarounds
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 6f52a703..5daf25dc 100644
--- a/README.md
+++ b/README.md
@@ -409,7 +409,7 @@ shorthand character sets are as follows:
Lookbehind and lookahead (also called lookaround) are specific types of
***non-capturing groups*** (Used to match the pattern but not included in matching
-list). Lookaheads are used when we have the condition that this pattern is
+list). Lookarounds are used when we have the condition that this pattern is
preceded or followed by another certain pattern. For example, we want to get all
numbers that are preceded by `$` character from the following input string
`$4.44 and $10.88`. We will use following regular expression `(?<=\$)[0-9\.]*`
From 38354692cfddae7540686542c47c7e331ccf4307 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:24:11 +0400
Subject: [PATCH 029/162] Put links inside header
---
README-cn.md | 18 +++++++++++++++---
README-es.md | 18 +++++++++++++++---
README-fr.md | 18 +++++++++++++++---
README-gr.md | 18 +++++++++++++++---
README-hu.md | 18 +++++++++++++++---
README-ja.md | 18 +++++++++++++++---
README-ko.md | 18 +++++++++++++++---
README-pl.md | 18 +++++++++++++++---
README-pt_BR.md | 18 +++++++++++++++---
README-tr.md | 18 +++++++++++++++---
README-zh-simple.md | 18 +++++++++++++++---
README.md | 17 ++++++++++++++---
12 files changed, 179 insertions(+), 36 deletions(-)
diff --git a/README-cn.md b/README-cn.md
index e1e4eb5e..c710fc61 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## 翻译:
diff --git a/README-es.md b/README-es.md
index 8026ee5d..d9eb4260 100644
--- a/README-es.md
+++ b/README-es.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Traducciones:
diff --git a/README-fr.md b/README-fr.md
index e0354beb..f102e8f5 100644
--- a/README-fr.md
+++ b/README-fr.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Traductions:
diff --git a/README-gr.md b/README-gr.md
index b480e9a3..b8dd12fa 100644
--- a/README-gr.md
+++ b/README-gr.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Μεταφράσεις:
diff --git a/README-hu.md b/README-hu.md
index 770a61f3..ff9e09f2 100644
--- a/README-hu.md
+++ b/README-hu.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Fordítások:
diff --git a/README-ja.md b/README-ja.md
index b5ed321a..81ac7324 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## 翻訳
diff --git a/README-ko.md b/README-ko.md
index 777c76d6..448f8d1b 100644
--- a/README-ko.md
+++ b/README-ko.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## 번역:
diff --git a/README-pl.md b/README-pl.md
index a5ef17c0..f4064b43 100644
--- a/README-pl.md
+++ b/README-pl.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Tłumaczenia:
diff --git a/README-pt_BR.md b/README-pt_BR.md
index 0942e5c3..eff3549a 100644
--- a/README-pt_BR.md
+++ b/README-pt_BR.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Traduções:
diff --git a/README-tr.md b/README-tr.md
index fe40116b..308e41fd 100644
--- a/README-tr.md
+++ b/README-tr.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## Çeviriler:
diff --git a/README-zh-simple.md b/README-zh-simple.md
index 83de5b82..e88116a3 100644
--- a/README-zh-simple.md
+++ b/README-zh-simple.md
@@ -1,7 +1,19 @@
-
-
-
+
+
+
+
+
+
+
+
## 什么是正则表达式?
diff --git a/README.md b/README.md
index 5daf25dc..e7590922 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,18 @@
-
-
-
+
+
+
+
+
+
+
## Translations:
From 19170f71fad77eab5db74b72bd6876ec06526ef2 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:27:58 +0400
Subject: [PATCH 030/162] Update year inside LICENSE.md
---
LICENSE.md | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 LICENSE.md
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 00000000..5171fedf
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 Zeeshan Ahmad
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
From a2bf72bfb8376e6a98c78393d1720041a6fafd59 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:28:40 +0400
Subject: [PATCH 031/162] Put .DS_Store inside .gitignore
---
.gitignore | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index 600d2d33..0f971a30 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-.vscode
\ No newline at end of file
+.vscode
+.DS_STORE
\ No newline at end of file
From 9e2ac646bba0ea3bb128a34a284303ec0812d08d Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:29:02 +0400
Subject: [PATCH 032/162] Move translations md files to translations directory
---
LICENSE | 21 -------------------
README-cn.md => translations/README-cn.md | 0
README-es.md => translations/README-es.md | 0
README-fr.md => translations/README-fr.md | 0
README-gr.md => translations/README-gr.md | 0
README-hu.md => translations/README-hu.md | 0
README-ja.md => translations/README-ja.md | 0
README-ko.md => translations/README-ko.md | 0
README-pl.md => translations/README-pl.md | 0
.../README-pt_BR.md | 0
README-tr.md => translations/README-tr.md | 0
.../README-zh-simple.md | 0
12 files changed, 21 deletions(-)
delete mode 100644 LICENSE
rename README-cn.md => translations/README-cn.md (100%)
rename README-es.md => translations/README-es.md (100%)
rename README-fr.md => translations/README-fr.md (100%)
rename README-gr.md => translations/README-gr.md (100%)
rename README-hu.md => translations/README-hu.md (100%)
rename README-ja.md => translations/README-ja.md (100%)
rename README-ko.md => translations/README-ko.md (100%)
rename README-pl.md => translations/README-pl.md (100%)
rename README-pt_BR.md => translations/README-pt_BR.md (100%)
rename README-tr.md => translations/README-tr.md (100%)
rename README-zh-simple.md => translations/README-zh-simple.md (100%)
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index de523bdf..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2017 Zeeshan Ahmad
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/README-cn.md b/translations/README-cn.md
similarity index 100%
rename from README-cn.md
rename to translations/README-cn.md
diff --git a/README-es.md b/translations/README-es.md
similarity index 100%
rename from README-es.md
rename to translations/README-es.md
diff --git a/README-fr.md b/translations/README-fr.md
similarity index 100%
rename from README-fr.md
rename to translations/README-fr.md
diff --git a/README-gr.md b/translations/README-gr.md
similarity index 100%
rename from README-gr.md
rename to translations/README-gr.md
diff --git a/README-hu.md b/translations/README-hu.md
similarity index 100%
rename from README-hu.md
rename to translations/README-hu.md
diff --git a/README-ja.md b/translations/README-ja.md
similarity index 100%
rename from README-ja.md
rename to translations/README-ja.md
diff --git a/README-ko.md b/translations/README-ko.md
similarity index 100%
rename from README-ko.md
rename to translations/README-ko.md
diff --git a/README-pl.md b/translations/README-pl.md
similarity index 100%
rename from README-pl.md
rename to translations/README-pl.md
diff --git a/README-pt_BR.md b/translations/README-pt_BR.md
similarity index 100%
rename from README-pt_BR.md
rename to translations/README-pt_BR.md
diff --git a/README-tr.md b/translations/README-tr.md
similarity index 100%
rename from README-tr.md
rename to translations/README-tr.md
diff --git a/README-zh-simple.md b/translations/README-zh-simple.md
similarity index 100%
rename from README-zh-simple.md
rename to translations/README-zh-simple.md
From 26a602c535afd7cd820733deabe0ac9619de6b53 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:48:59 +0400
Subject: [PATCH 033/162] Update readme links
---
README.md | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index e7590922..7fea7021 100644
--- a/README.md
+++ b/README.md
@@ -16,17 +16,17 @@
## Translations:
-* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [English](translations/README.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## What is Regular Expression?
From 89a8d7ed0536c761361eedf193f84ce7ef6c9f04 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:50:04 +0400
Subject: [PATCH 034/162] Update readme link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 7fea7021..368ea626 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@
## Translations:
-* [English](translations/README.md)
+* [English](README.md)
* [Español](translations/README-es.md)
* [Français](translations/README-fr.md)
* [Português do Brasil](translations/README-pt_BR.md)
From 082750a4fe7b22b9a2869929254f9c8ca77e25b5 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:52:43 +0400
Subject: [PATCH 035/162] Update readme links
---
translations/README-cn.md | 19 ++++++++++---------
translations/README-es.md | 20 ++++++++++----------
translations/README-fr.md | 19 ++++++++++---------
translations/README-gr.md | 20 ++++++++++----------
translations/README-hu.md | 19 ++++++++++---------
translations/README-ja.md | 19 ++++++++++---------
translations/README-ko.md | 19 ++++++++++---------
translations/README-pl.md | 19 ++++++++++---------
translations/README-pt_BR.md | 19 ++++++++++---------
translations/README-tr.md | 19 ++++++++++---------
translations/README-zh-simple.md | 13 +++++++++++++
11 files changed, 113 insertions(+), 92 deletions(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index c710fc61..c765fc54 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -18,15 +18,16 @@
## 翻译:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## 什么是正则表达式?
diff --git a/translations/README-es.md b/translations/README-es.md
index d9eb4260..ff25d406 100644
--- a/translations/README-es.md
+++ b/translations/README-es.md
@@ -18,16 +18,16 @@
## Traducciones:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## Qué es una expresión regular?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
diff --git a/translations/README-fr.md b/translations/README-fr.md
index f102e8f5..271a1326 100644
--- a/translations/README-fr.md
+++ b/translations/README-fr.md
@@ -18,15 +18,16 @@
## Traductions:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## Qu'est-ce qu'une expression régulière?
diff --git a/translations/README-gr.md b/translations/README-gr.md
index b8dd12fa..3a906d0d 100644
--- a/translations/README-gr.md
+++ b/translations/README-gr.md
@@ -18,16 +18,16 @@
## Μεταφράσεις:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## Τι είναι μια Κανονική Έκφραση (Regular Expression);
diff --git a/translations/README-hu.md b/translations/README-hu.md
index ff9e09f2..ee1e552f 100644
--- a/translations/README-hu.md
+++ b/translations/README-hu.md
@@ -18,15 +18,16 @@
## Fordítások:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## Mi az a reguláris kifejezés?
diff --git a/translations/README-ja.md b/translations/README-ja.md
index 81ac7324..3269fea5 100644
--- a/translations/README-ja.md
+++ b/translations/README-ja.md
@@ -18,15 +18,16 @@
## 翻訳
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## 正規表現とは
diff --git a/translations/README-ko.md b/translations/README-ko.md
index 448f8d1b..a13eeb43 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -18,15 +18,16 @@
## 번역:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## 정규표현식이란 무엇인가?
diff --git a/translations/README-pl.md b/translations/README-pl.md
index f4064b43..2a7d387b 100644
--- a/translations/README-pl.md
+++ b/translations/README-pl.md
@@ -18,15 +18,16 @@
## Tłumaczenia:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## Co to jest wyrażenie regularne?
diff --git a/translations/README-pt_BR.md b/translations/README-pt_BR.md
index eff3549a..2a7ed8f4 100644
--- a/translations/README-pt_BR.md
+++ b/translations/README-pt_BR.md
@@ -18,15 +18,16 @@
## Traduções:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [Português do Brasil](README-pt_BR.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## O que é uma Expressão Regular?
diff --git a/translations/README-tr.md b/translations/README-tr.md
index 308e41fd..b935359f 100644
--- a/translations/README-tr.md
+++ b/translations/README-tr.md
@@ -18,15 +18,16 @@
## Çeviriler:
* [English](README.md)
-* [Español](README-es.md)
-* [Français](README-fr.md)
-* [中文版](README-cn.md)
-* [日本語](README-ja.md)
-* [한국어](README-ko.md)
-* [Turkish](README-tr.md)
-* [Greek](README-gr.md)
-* [Magyar](README-hu.md)
-* [Polish](README-pl.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## Düzenli İfade Nedir?
diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md
index e88116a3..708371d2 100644
--- a/translations/README-zh-simple.md
+++ b/translations/README-zh-simple.md
@@ -14,6 +14,19 @@
+## Translations:
+
+* [English](README.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
## 什么是正则表达式?
From 3ad593b82aaba9274b28adff169cc2669ef51a5f Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:56:24 +0400
Subject: [PATCH 036/162] Add how-to.md file
---
translations/how-to.md | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 translations/how-to.md
diff --git a/translations/how-to.md b/translations/how-to.md
new file mode 100644
index 00000000..91b6081d
--- /dev/null
+++ b/translations/how-to.md
@@ -0,0 +1,9 @@
+Please put new translation README files here.
+
+To start a new translation, please:
+
+1. Make an issue (for collaboration with other translators)
+2. Make a pull request to collaborate and commit to.
+3. Let me know when it's ready to pull.
+
+Thank you!
\ No newline at end of file
From 99e40a2bdd777c1b4d5957666fa12d6682e69762 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 21:57:58 +0400
Subject: [PATCH 037/162] Add regex svg file
---
img/regexp.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/img/regexp.svg b/img/regexp.svg
index 50ea7c7a..46d9f188 100644
--- a/img/regexp.svg
+++ b/img/regexp.svg
@@ -55,7 +55,7 @@
regexp
- https://github.com/zeeshanu/learn-regex
+ https://github.com/ziishaned/learn-regex
ponsfrilus
From b00833c815d903cc4b5e1be7a47e21c67f8cfb18 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Sat, 12 Jan 2019 22:02:51 +0400
Subject: [PATCH 038/162] Update contribution section
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 368ea626..d0712bbe 100644
--- a/README.md
+++ b/README.md
@@ -594,10 +594,10 @@ possible. we can use `?` to match in lazy way means as short as possible
## Contribution
-* Report issues
* Open pull request with improvements
+* Discuss ideas in issues
* Spread the word
-* Reach out to me directly at ziishaned@gmail.com or [](https://twitter.com/ziishaned)
+* Reach out with any feedback [](https://twitter.com/ziishaned)
## License
From a43006b5624c0bd361dde7169e727dd4cc1e209a Mon Sep 17 00:00:00 2001
From: "Yeongjun.Kim"
Date: Mon, 28 Jan 2019 11:59:43 +0900
Subject: [PATCH 039/162] Update README-ko
---
translations/README-ko.md | 116 +++++++++++++++++++++-----------------
1 file changed, 65 insertions(+), 51 deletions(-)
diff --git a/translations/README-ko.md b/translations/README-ko.md
index a13eeb43..ee7abdcf 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -57,7 +57,8 @@
- [덧셈 부호](#232-덧셈-부호)
- [물음표](#233-물음표)
- [중괄호](#24-중괄호)
- - [문자 그룹](#25-문자-그룹)
+ - [캡쳐링 그룹](#25-캡쳐-그룹)
+ - [논-캡쳐링 그룹](#251-논-캡쳐링-그룹)
- [대안 부호](#26-대안-부호)
- [특수 문자 이스케이핑](#27-특수-문자-이스케이핑)
- [앵커 부호](#28-앵커-부호)
@@ -73,7 +74,7 @@
- [대소문자 구분없음](#51-대소문자-구분없음)
- [전체 검색](#52-전체-검색)
- [멀티 라인](#53-멀티-라인)
- - [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른 매칭)
+- [탐욕적 vs 게으른 매칭](#6-탐욕적-vs-게으른 매칭)
## 1. 기본 매쳐
@@ -95,23 +96,22 @@
## 2. 메타 문자
-메타 문자들은 정규 표현식의 빌딩 블락들이다. 메타 문자들은 자체적인 의미를 가지지 않고 특별한 방식으로 해석되어진다. 어떤 메타 문자열들은 특별한 의미를 가지며 대괄호안에서 쓰인다.
-아래는 이러한 메타 문자열들이다:
-
-|메타 문자|설명|
-|:----:|----|
-|.|온점(Period)는 줄바꿈을 제외한 어떤 종류의 단일 문자와 매치.|
-|[ ]|문자 클래스. 대괄호 사이에 있는 문자들로 매치.|
-|[^ ]|부정 문자 클래스. 대괄호 안에 포함되지 않은 모든 문자들로 매치.|
-|*|이 메타 문자의 바로 앞에 있는 심볼이 0번 이상 반복된 문자들과 매치.|
-|+|이 메타 문자의 바로 앞에 있는 심볼이 한번 이상 반복된 문자들과 매치.|
-|?|이 메타 문자의 바로 앞에 있는 심볼을 선택적(optional)으로 만듬.|
-|{n,m}|중괄호. 이 메타 문자의 바로 앞에 위치한 심볼이 최소 n번 최대 m번의 반복된 문자들과 매치.|
-|(xyz)|문자 그룹. 문자열 xyz와 정확히 같은 순서를 가진 문자들과 매치.|
-|||대안. 문자가 이 메타 문자의 앞에 있는 심볼이거나 뒤에 있는 심볼이면 매치.|
-|\|다음 문자 이스케이프(Escape). 예약된 문자열들 [ ] ( ) { } . * + ? ^ $ \ |을 이스케이핑함으로써 그 자체와 매칭되는 것을 허용.|
-|^|입력의 시작과 매치.|
-|$|입력의 끝과 매치.|
+메타 문자들은 정규 표현식의 빌딩 블락들이다. 메타 문자들은 자체적인 의미를 가지지 않고 특별한 방식으로 해석되어진다. 어떤 메타 문자열들은 특별한 의미를 가지며 대괄호안에서 쓰인다. 아래는 이러한 메타 문자열들이다:
+
+| 메타 문자 | 설명 |
+|:----:| ----|
+| . | 온점(Period)는 줄바꿈을 제외한 어떤 종류의 단일 문자와 매치.|
+| [ ] | 문자 클래스. 대괄호 사이에 있는 문자들로 매치.|
+| [^ ] | 부정 문자 클래스. 대괄호 안에 포함되지 않은 모든 문자들로 매치.|
+| \* | 이 메타 문자의 바로 앞에 있는 심볼이 0번 이상 반복된 문자들과 매치.|
+| + | 이 메타 문자의 바로 앞에 있는 심볼이 한번 이상 반복된 문자들과 매치.|
+| ? | 이 메타 문자의 바로 앞에 있는 심볼을 선택적(optional)으로 만듬.|
+| {n,m} | 중괄호. 이 메타 문자의 바로 앞에 위치한 심볼이 최소 n번 최대 m번의 반복된 문자들과 매치.|
+| (xyz) | 문자 그룹. 문자열 xyz와 정확히 같은 순서를 가진 문자들과 매치.|
+| | | 대안. 문자가 이 메타 문자의 앞에 있는 심볼이거나 뒤에 있는 심볼이면 매치.|
+| \| 다음 문자 이스케이프(Escape). 예약된 문자열들 [ ] ( ) { } . \* + ? ^ \$ \ |을 이스케이핑함으로써 그 자체와 매칭되는 것을 허용.|
+| ^ | 입력의 시작과 매치.|
+| \$ | 입력의 끝과 매치.|
## 2.1 마침표
@@ -176,7 +176,7 @@
### 2.3.2 덧셈 부호
`+` 부호는 부호 앞에 위치한 문자가 한번 이상 반복되는 패턴을 만드는데 사용된다. 예를 들어, 정규 표현식 `c.+t`는 소문자 `c`가 나오고, 그 뒤에 한개 이상의 문자가 나온 후, 소문자 `t`가 나오는 패턴을 의미한다. 여기서 문자 `t`는 해당 문장의 제일 마지막 글자 `t`라는것을 명확히할 필요가 있다.
- w
+
"c.+t" => The fat cat sat on the mat.
@@ -201,7 +201,7 @@
## 2.4 중괄호
-정규 표현식에서 정량자(quantifier)라고도 불리는 중괄호는 하나의 문자 혹은 문자 집합으로 표시된 문자가 몇번 반복되는지 명시하는데 사용된다. 예를 들어, 정규 표현식 `[0-9]{2,3}`은 숫자 문자(0부터 9사이의 문자)가 최소 2번, 최대 3번 연속해서 나오는 문자열 패턴을 의미한다.
+정규 표현식에서 정량자(quantifier)라고도 불리는 중괄호는 하나의 문자 혹은 문자 집합으로 표시된 문자가 몇번 반복되는지명시하는데 사용된다. 예를 들어, 정규 표현식 `[0-9]{2,3}`은 숫자 문자(0부터 9사이의 문자)가 최소 2번, 최대 3번 연속해서 나오는 문자열 패턴을 의미한다.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -223,9 +223,9 @@
[Test the regular expression](https://regex101.com/r/Sivu30/1)
-## 2.5 문자 그룹
+## 2.5 캡쳐링 그룹
-문자 그룹은 괄호 `(...)` 안에 쓰여진 하위 패턴들의 그룹이다. 위에서 논의했듯이, 정규 표현식에서 하나의 문자 뒤에 정량자(quantifier)를 넣는 경우에는 해당 문자의 반복을 나타낸다. 하지만, 만약 하나의 문자 그룹 뒤에 정량자를 넣는 경우에는 문자 그룹 전체의 반복을 나타내게 된다. 예를 들어, 정규 표현식 `(ab)*`는 문자 "ab"가 0번 이상 반복되는 패턴을 의미한다. 대안 부호인 `|` 또한 문자 그룹 내부에서 사용할 수 있다. 예를 들어, 정규 표현식 `(c|g|p)ar`은 소문자 `c`, `g` 혹은 `p`가 나온 이후에 문자 `a`가 나오고 그 뒤에 문자 `r`이 나오는 패턴을 의미한다.
+캡쳐링 그룹은 괄호 `(...)` 안에 쓰여진 하위 패턴들의 그룹이다. 위에서 논의했듯이, 정규 표현식에서 하나의 문자 뒤에 정량자(quantifier)를 넣는 경우에는 해당 문자의 반복을 나타낸다. 하지만, 만약 하나의 캡쳐링 그룹 뒤에 정량자를 넣는 경우에는 캡쳐링 그룹 전체의 반복을 나타내게 된다. 예를 들어, 정규 표현식 `(ab)*`는 문자 "ab"가 0번 이상 반복되는 패턴을 의미한다. 대안 부호인 `|` 또한 문자 그룹 내부에서 사용할 수 있다. 예를 들어, 정규 표현식 `(c|g|p)ar`은 소문자 `c`, `g` 혹은 `p`가 나온 이후에 문자 `a`가 나오고 그 뒤에 문자 `r`이 나오는 패턴을 의미한다.
"(c|g|p)ar" => The car is parked in the garage.
@@ -233,6 +233,20 @@
[Test the regular expression](https://regex101.com/r/tUxrBG/1)
+캡처링 그룹은 부모 언어에서 사용하기 위해 문자를 일치시킬뿐만 아니라 문자를 캡처한다는 점에 유의해야 한다. 부모 언어는 파이썬이나 자바 스크립트 또는 함수 정의에서 정규 표현식을 구현하는 거의 모든 언어가 될 수 있다.
+
+### 2.5.1 논-캡쳐링 그룹
+
+논-캡쳐링 그룹은 오직 문자열에 매칭되지만, 그룹을 캡쳐하지 않는 캡쳐링 그룹이다. 논-캡쳐링 그룹은 `(...)` 괄호안에 `?:` 로 표시된다. 예를 들어 정규식 `(?:c|g|p)ar` 는 `(c|g|p)ar`와 같은 문자열을 매칭하는 것에서 유사하지만, 캡쳐링 그룹을 만들지 않는다.
+
+
+"(?:c|g|p)ar" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/Rm7Me8/1)
+
+논-캡처링 그룹은 찾기 및 변경 기능에서 사용하거나 캡처 그룹 함께 사용하여 다른 종류의 출력 생성시 overview를 유지할 때 유용하다. 또한 [4. 전후방탐색](#4-전후방탐색)를 보아라.
+
## 2.6 대안 부호
정규 표현식에서 수직 막대 부호 `|`는 대안을 정의하는데 사용된다. 대안 부호는 여러개의 표현식들 사이의 조건과도 같다. 지금쯤 당신은 문자 집합(Character set)과 대안 부호가 동일하게 동작한다고 생각하고 있을 것이다. 하지만, 문자 집합과 대안 부호 사이의 가장 큰 차이점은 문자 집합은 문자 수준에서 동작하는 반면, 대안 부호는 표현식 수준에서 동작한다는 것이다. 예를 들어, 정규 표현식 `(T|t)he|car`는 대문자 `T` 혹은 소문자 `t`가 나오고 문자 `h`, 문자 `e`가 차례로 나오거나 문자 `c`, 문자 `a`, 문자 `r`이 차례로 나오는 패턴을 의미한다.
@@ -293,26 +307,26 @@
정규 표현식은 일반적으로 사용되는 문자열 집합들을 간편하게 사용할 수 있도록 여러 단축형들을 제공한다. 단축형 문자열 집합은 아래와 같다.
-|단축형|설명|
-|:----:|----|
-|.|개행을 제외한 모든 문자|
-|\w|영숫자 문자와 매치: `[a-zA-Z0-9_]`|
-|\W|영숫자 문자가 아닌 문자와 매치: `[^\w]`|
-|\d|숫자와 매치: `[0-9]`|
-|\D|숫자가 아닌 문자와 매치: `[^\d]`|
-|\s|공백 문자와 매치: `[\t\n\f\r\p{Z}]`|
-|\S|공백 문자가 아닌 문자와 매치: `[^\s]`|
+| 단축형 | 설명 |
+| :----: | --------------------------------------- |
+| . | 개행을 제외한 모든 문자 |
+| \w | 영숫자 문자와 매치: `[a-zA-Z0-9_]` |
+| \W | 영숫자 문자가 아닌 문자와 매치: `[^\w]` |
+| \d | 숫자와 매치: `[0-9]` |
+| \D | 숫자가 아닌 문자와 매치: `[^\d]` |
+| \s | 공백 문자와 매치: `[\t\n\f\r\p{Z}]` |
+| \S | 공백 문자가 아닌 문자와 매치: `[^\s]` |
## 4. 전후방탐색
-때때로 전후방탐색Lookaround이라고 알려진 후방탐색Lookbehind과 전방탐색Lookahead은 (패턴 매칭을 위해서 사용되지만 매칭된 리스트에는 포함되지 않는) ***넌-캡쳐링 그룹*** 의 특정 종류들이다. 전후방탐색은 하나의 패턴이 다른 특정 패턴 전이나 후에 나타나는 조건을 가지고 있을때 사용한다. 예를 들어, 우리가 입력 문자열 `$4.44 and $10.88`에 대해서 달러 부호 `$`이후에 나오는 모든 숫자를 매칭시키고 싶다고 하자. 이때 정규 표현식 `(?<=\$)[0-9\.]*`를 사용할 수 있다. 이 정규 표현식은 `$` 문자 뒤에 나오는 문자 `.`을 포함한 모든 숫자 문자를 의미한다. 다음은 정규 표현식에서 사용되는 전후방탐색들이다.
+때때로 전후방탐색Lookaround이라고 알려진 후방탐색Lookbehind과 전방탐색Lookahead은 (패턴 매칭을 위해서 사용되지만 매칭된 리스트에는 포함되지 않는) **_넌-캡쳐링 그룹_** 의 특정 종류들이다. 전후방탐색은 하나의 패턴이 다른 특정 패턴 전이나 후에 나타나는 조건을 가지고 있을때 사용한다. 예를 들어, 우리가 입력 문자열 `$4.44 and $10.88`에 대해서 달러 부호 `$`이후에 나오는 모든 숫자를 매칭시키고 싶다고 하자. 이때 정규 표현식 `(?<=\$)[0-9\.]*`를 사용할 수 있다. 이 정규 표현식은 `$` 문자 뒤에 나오는 문자 `.`을 포함한 모든 숫자 문자를 의미한다. 다음은 정규 표현식에서 사용되는 전후방탐색들이다.
-|부호|설명|
-|:----:|----|
-|?=|긍정형 전방탐색|
-|?!|부정형 전방탐색|
-|?<=|긍정형 후방탐색|
-|?
"(?<![T|t]he\s)(cat)" => The cat sat on cat.
@@ -358,11 +372,11 @@
플래그는 정규표현식의 출력값을 수정하기 때문에 수정자(modifier)라고도 불린다. 이러한 플래그들은 어떤 순서 혹은 조합으로 사용 가능하며 정규 표현식의 일부분이다.
-|플래그|설명|
-|:----:|----|
-|i|대소문자 구분없음: 매칭이 대소문자를 구분하지 않도록 설정.|
-|g|전체 검색: 입력 문자열 전체를 대상으로 패턴을 검색.|
-|m|멀티 라인: 앵터 메타 문자가 각 줄마다 동작하도록 설정.|
+| 플래그 | 설명 |
+| :----: | ---------------------------------------------------------- |
+| i | 대소문자 구분없음: 매칭이 대소문자를 구분하지 않도록 설정. |
+| g | 전체 검색: 입력 문자열 전체를 대상으로 패턴을 검색. |
+| m | 멀티 라인: 앵터 메타 문자가 각 줄마다 동작하도록 설정. |
### 5.1 대소문자 구분없음
@@ -417,8 +431,8 @@
[Test the regular expression](https://regex101.com/r/E88WE2/1)
## 6. 탐욕적 vs 게으른 매칭
-기본적으로 정규 표현식은 탐욕적(greedy) 매칭을 수행하는데, 이는 가능한 한 길게 매칭하는 것을 의미한다.
-우리는 `?`를 사용하여 게으른(lazy) 방법 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
+
+기본적으로 정규 표현식은 탐욕적(greedy) 매칭을 수행하는데, 이는 가능한 한 길게 매칭하는 것을 의미한다. 우리는 `?`를 사용하여 게으른(lazy) 방법 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
"/(.*at)/" => The fat cat sat on the mat.
@@ -434,10 +448,10 @@
## 기여 방법
-* 이슈 리포팅
-* 코드 개선해서 풀 리퀘스트 열기
-* 소문내기
-* ziishaned@gmail.com 메일로 직접 연락하기 또는 [](https://twitter.com/ziishaned)
+- 이슈 리포팅
+- 코드 개선해서 풀 리퀘스트 열기
+- 소문내기
+- ziishaned@gmail.com 메일로 직접 연락하기 또는 [](https://twitter.com/ziishaned)
## 라이센스
From 3a30006de007a1adc318371ceb026578b57fd9d7 Mon Sep 17 00:00:00 2001
From: "Yeongjun.Kim"
Date: Mon, 28 Jan 2019 12:02:08 +0900
Subject: [PATCH 040/162] Update README-ko
---
translations/README-ko.md | 52 +++++++++++++++++++--------------------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/translations/README-ko.md b/translations/README-ko.md
index ee7abdcf..5061101a 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -201,7 +201,7 @@
## 2.4 중괄호
-정규 표현식에서 정량자(quantifier)라고도 불리는 중괄호는 하나의 문자 혹은 문자 집합으로 표시된 문자가 몇번 반복되는지명시하는데 사용된다. 예를 들어, 정규 표현식 `[0-9]{2,3}`은 숫자 문자(0부터 9사이의 문자)가 최소 2번, 최대 3번 연속해서 나오는 문자열 패턴을 의미한다.
+정규 표현식에서 정량자(quantifier)라고도 불리는 중괄호는 하나의 문자 혹은 문자 집합으로 표시된 문자가 몇번 반복되는지 명시하는데 사용된다. 예를 들어, 정규 표현식 `[0-9]{2,3}`은 숫자 문자(0부터 9사이의 문자)가 최소 2번, 최대 3번 연속해서 나오는 문자열 패턴을 의미한다.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -307,26 +307,26 @@
정규 표현식은 일반적으로 사용되는 문자열 집합들을 간편하게 사용할 수 있도록 여러 단축형들을 제공한다. 단축형 문자열 집합은 아래와 같다.
-| 단축형 | 설명 |
-| :----: | --------------------------------------- |
-| . | 개행을 제외한 모든 문자 |
-| \w | 영숫자 문자와 매치: `[a-zA-Z0-9_]` |
-| \W | 영숫자 문자가 아닌 문자와 매치: `[^\w]` |
-| \d | 숫자와 매치: `[0-9]` |
-| \D | 숫자가 아닌 문자와 매치: `[^\d]` |
-| \s | 공백 문자와 매치: `[\t\n\f\r\p{Z}]` |
-| \S | 공백 문자가 아닌 문자와 매치: `[^\s]` |
+|단축형|설명|
+|:----:|----|
+|.|개행을 제외한 모든 문자|
+|\w|영숫자 문자와 매치: `[a-zA-Z0-9_]`|
+|\W|영숫자 문자가 아닌 문자와 매치: `[^\w]`|
+|\d|숫자와 매치: `[0-9]`|
+|\D|숫자가 아닌 문자와 매치: `[^\d]`|
+|\s|공백 문자와 매치: `[\t\n\f\r\p{Z}]`|
+|\S|공백 문자가 아닌 문자와 매치: `[^\s]`|
## 4. 전후방탐색
때때로 전후방탐색Lookaround이라고 알려진 후방탐색Lookbehind과 전방탐색Lookahead은 (패턴 매칭을 위해서 사용되지만 매칭된 리스트에는 포함되지 않는) **_넌-캡쳐링 그룹_** 의 특정 종류들이다. 전후방탐색은 하나의 패턴이 다른 특정 패턴 전이나 후에 나타나는 조건을 가지고 있을때 사용한다. 예를 들어, 우리가 입력 문자열 `$4.44 and $10.88`에 대해서 달러 부호 `$`이후에 나오는 모든 숫자를 매칭시키고 싶다고 하자. 이때 정규 표현식 `(?<=\$)[0-9\.]*`를 사용할 수 있다. 이 정규 표현식은 `$` 문자 뒤에 나오는 문자 `.`을 포함한 모든 숫자 문자를 의미한다. 다음은 정규 표현식에서 사용되는 전후방탐색들이다.
-| 부호 | 설명 |
-| :--: | --------------- |
-| ?= | 긍정형 전방탐색 |
-| ?! | 부정형 전방탐색 |
-| ?<= | 긍정형 후방탐색 |
-| ?
"(?<![T|t]he\s)(cat)" => The cat sat on cat.
@@ -372,11 +372,11 @@
플래그는 정규표현식의 출력값을 수정하기 때문에 수정자(modifier)라고도 불린다. 이러한 플래그들은 어떤 순서 혹은 조합으로 사용 가능하며 정규 표현식의 일부분이다.
-| 플래그 | 설명 |
-| :----: | ---------------------------------------------------------- |
-| i | 대소문자 구분없음: 매칭이 대소문자를 구분하지 않도록 설정. |
-| g | 전체 검색: 입력 문자열 전체를 대상으로 패턴을 검색. |
-| m | 멀티 라인: 앵터 메타 문자가 각 줄마다 동작하도록 설정. |
+|플래그|설명|
+|:----:|----|
+|i|대소문자 구분없음: 매칭이 대소문자를 구분하지 않도록 설정.|
+|g|전체 검색: 입력 문자열 전체를 대상으로 패턴을 검색.|
+|m|멀티 라인: 앵터 메타 문자가 각 줄마다 동작하도록 설정.|
### 5.1 대소문자 구분없음
@@ -448,10 +448,10 @@
## 기여 방법
-- 이슈 리포팅
-- 코드 개선해서 풀 리퀘스트 열기
-- 소문내기
-- ziishaned@gmail.com 메일로 직접 연락하기 또는 [](https://twitter.com/ziishaned)
+* 이슈 리포팅
+* 코드 개선해서 풀 리퀘스트 열기
+* 소문내기
+* ziishaned@gmail.com 메일로 직접 연락하기 또는 [](https://twitter.com/ziishaned)
## 라이센스
From 4ae12d88057e2988c17573aaa032bee64fd04cc6 Mon Sep 17 00:00:00 2001
From: "Yeongjun.Kim"
Date: Mon, 28 Jan 2019 12:04:01 +0900
Subject: [PATCH 041/162] Update README-ko
---
translations/README-ko.md | 27 +++++++++++++--------------
1 file changed, 13 insertions(+), 14 deletions(-)
diff --git a/translations/README-ko.md b/translations/README-ko.md
index 5061101a..6a962ed8 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -98,20 +98,20 @@
메타 문자들은 정규 표현식의 빌딩 블락들이다. 메타 문자들은 자체적인 의미를 가지지 않고 특별한 방식으로 해석되어진다. 어떤 메타 문자열들은 특별한 의미를 가지며 대괄호안에서 쓰인다. 아래는 이러한 메타 문자열들이다:
-| 메타 문자 | 설명 |
+|메타 문자|설명|
|:----:| ----|
-| . | 온점(Period)는 줄바꿈을 제외한 어떤 종류의 단일 문자와 매치.|
-| [ ] | 문자 클래스. 대괄호 사이에 있는 문자들로 매치.|
-| [^ ] | 부정 문자 클래스. 대괄호 안에 포함되지 않은 모든 문자들로 매치.|
-| \* | 이 메타 문자의 바로 앞에 있는 심볼이 0번 이상 반복된 문자들과 매치.|
-| + | 이 메타 문자의 바로 앞에 있는 심볼이 한번 이상 반복된 문자들과 매치.|
-| ? | 이 메타 문자의 바로 앞에 있는 심볼을 선택적(optional)으로 만듬.|
-| {n,m} | 중괄호. 이 메타 문자의 바로 앞에 위치한 심볼이 최소 n번 최대 m번의 반복된 문자들과 매치.|
-| (xyz) | 문자 그룹. 문자열 xyz와 정확히 같은 순서를 가진 문자들과 매치.|
-| | | 대안. 문자가 이 메타 문자의 앞에 있는 심볼이거나 뒤에 있는 심볼이면 매치.|
-| \| 다음 문자 이스케이프(Escape). 예약된 문자열들 [ ] ( ) { } . \* + ? ^ \$ \ |을 이스케이핑함으로써 그 자체와 매칭되는 것을 허용.|
-| ^ | 입력의 시작과 매치.|
-| \$ | 입력의 끝과 매치.|
+|.|온점(Period)는 줄바꿈을 제외한 어떤 종류의 단일 문자와 매치.|
+|[ ]|문자 클래스. 대괄호 사이에 있는 문자들로 매치.|
+|[^ ]|부정 문자 클래스. 대괄호 안에 포함되지 않은 모든 문자들로 매치.|
+|\*|이 메타 문자의 바로 앞에 있는 심볼이 0번 이상 반복된 문자들과 매치.|
+|+|이 메타 문자의 바로 앞에 있는 심볼이 한번 이상 반복된 문자들과 매치.|
+|?|이 메타 문자의 바로 앞에 있는 심볼을 선택적(optional)으로 만듬.|
+|{n,m}|중괄호. 이 메타 문자의 바로 앞에 위치한 심볼이 최소 n번 최대 m번의 반복된 문자들과 매치.|
+|(xyz)|문자 그룹. 문자열 xyz와 정확히 같은 순서를 가진 문자들과 매치.|
+|||대안. 문자가 이 메타 문자의 앞에 있는 심볼이거나 뒤에 있는 심볼이면 매치.|
+|\|다음 문자 이스케이프(Escape). 예약된 문자열들 [ ] ( ) { } . \* + ? ^ \$ \ |을 이스케이핑함으로써 그 자체와 매칭되는 것을 허용.|
+|^|입력의 시작과 매치.|
+|\$|입력의 끝과 매치.|
## 2.1 마침표
@@ -431,7 +431,6 @@
[Test the regular expression](https://regex101.com/r/E88WE2/1)
## 6. 탐욕적 vs 게으른 매칭
-
기본적으로 정규 표현식은 탐욕적(greedy) 매칭을 수행하는데, 이는 가능한 한 길게 매칭하는 것을 의미한다. 우리는 `?`를 사용하여 게으른(lazy) 방법 매칭할 수 있으며, 가능한 한 짧게 매칭하는 것을 의미한다.
From 89f4503bc02fc8b8afb801fe51e1acba8ddbf24b Mon Sep 17 00:00:00 2001
From: Enis OEZGEN
Date: Sun, 3 Feb 2019 14:46:49 +0100
Subject: [PATCH 042/162] Fix-Translation-Links
---
translations/README-cn.md | 22 +++++++++++-----------
translations/README-es.md | 22 +++++++++++-----------
translations/README-fr.md | 22 +++++++++++-----------
translations/README-gr.md | 22 +++++++++++-----------
translations/README-hu.md | 22 +++++++++++-----------
translations/README-ja.md | 22 +++++++++++-----------
translations/README-ko.md | 22 +++++++++++-----------
translations/README-pl.md | 22 +++++++++++-----------
translations/README-pt_BR.md | 22 +++++++++++-----------
translations/README-tr.md | 22 +++++++++++-----------
translations/README-zh-simple.md | 22 +++++++++++-----------
11 files changed, 121 insertions(+), 121 deletions(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index c765fc54..3d256c44 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -17,17 +17,17 @@
## 翻译:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## 什么是正则表达式?
diff --git a/translations/README-es.md b/translations/README-es.md
index ff25d406..233e39ae 100644
--- a/translations/README-es.md
+++ b/translations/README-es.md
@@ -17,17 +17,17 @@
## Traducciones:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## Qué es una expresión regular?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
diff --git a/translations/README-fr.md b/translations/README-fr.md
index 271a1326..46f62391 100644
--- a/translations/README-fr.md
+++ b/translations/README-fr.md
@@ -17,17 +17,17 @@
## Traductions:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## Qu'est-ce qu'une expression régulière?
diff --git a/translations/README-gr.md b/translations/README-gr.md
index 3a906d0d..00411898 100644
--- a/translations/README-gr.md
+++ b/translations/README-gr.md
@@ -17,17 +17,17 @@
## Μεταφράσεις:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## Τι είναι μια Κανονική Έκφραση (Regular Expression);
diff --git a/translations/README-hu.md b/translations/README-hu.md
index ee1e552f..48253c44 100644
--- a/translations/README-hu.md
+++ b/translations/README-hu.md
@@ -17,17 +17,17 @@
## Fordítások:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## Mi az a reguláris kifejezés?
diff --git a/translations/README-ja.md b/translations/README-ja.md
index 3269fea5..5657daba 100644
--- a/translations/README-ja.md
+++ b/translations/README-ja.md
@@ -17,17 +17,17 @@
## 翻訳
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## 正規表現とは
diff --git a/translations/README-ko.md b/translations/README-ko.md
index a13eeb43..19527422 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -17,17 +17,17 @@
## 번역:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## 정규표현식이란 무엇인가?
diff --git a/translations/README-pl.md b/translations/README-pl.md
index 2a7d387b..5a0ebda1 100644
--- a/translations/README-pl.md
+++ b/translations/README-pl.md
@@ -17,17 +17,17 @@
## Tłumaczenia:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## Co to jest wyrażenie regularne?
diff --git a/translations/README-pt_BR.md b/translations/README-pt_BR.md
index 2a7ed8f4..7fecb53f 100644
--- a/translations/README-pt_BR.md
+++ b/translations/README-pt_BR.md
@@ -17,17 +17,17 @@
## Traduções:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## O que é uma Expressão Regular?
diff --git a/translations/README-tr.md b/translations/README-tr.md
index b935359f..ec918cfa 100644
--- a/translations/README-tr.md
+++ b/translations/README-tr.md
@@ -17,17 +17,17 @@
## Çeviriler:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## Düzenli İfade Nedir?
diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md
index 708371d2..60652cef 100644
--- a/translations/README-zh-simple.md
+++ b/translations/README-zh-simple.md
@@ -16,17 +16,17 @@
## Translations:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
## 什么是正则表达式?
From 1a84cd502bb208086b0761d4d507401c24cf4e21 Mon Sep 17 00:00:00 2001
From: Enis OEZGEN
Date: Sun, 3 Feb 2019 15:52:17 +0100
Subject: [PATCH 043/162] Improve Turkish language
---
translations/README-tr.md | 243 +++++++++++++++++++++++++++-----------
1 file changed, 174 insertions(+), 69 deletions(-)
diff --git a/translations/README-tr.md b/translations/README-tr.md
index b935359f..6add9c61 100644
--- a/translations/README-tr.md
+++ b/translations/README-tr.md
@@ -33,9 +33,19 @@
> Düzenli ifade, bir metinden belirli bir deseni bulmak için kullanılan bir karakter veya sembol grubudur.
-Bir düzenli ifade soldan sağa söz konusu harf öbekleriyle eşleşen bir desendir. "Regular expression" söylemesi zor bir tabirdir, genellikle "regex" ya da "regexp" olarak kısaltılmış terimler olarak bulacaksınız. Düzenli ifade bir harf öbeğinde ki bir metin değiştirmek, form doğrulamak, bir desen eşleşmesine dayalı harf öbeğinden bir alt harf öbeği ayıklamak ve çok daha fazlası için kullanılır.
-
-Bir uygulama yazdığınızı hayal edin ve bir kullanıcı kullanıcı adını seçtiğinde kullanıcı adı için kurallar belirlemek istiyorsunuz. Kullanıcı adının harfler, sayılar, altçizgiler ve tireler içermesine izin vermek istiyoruz. Ayrıca, Kullanıcı adındaki karakter sayısını sınırlamak istiyoruz böylece çirkin görünmeyecek. Bir kullanıcı adını doğrulamak için aşağıdaki düzenli ifadeyi kullanıyoruz:
+Bir düzenli ifade soldan sağa söz konusu harf öbekleriyle eşleşen bir desendir.
+"Regular expression" söylemesi zor bir tabir olduğundan dolayı, genellikle
+"regex" ya da "regexp" olarak kısaltılmış olarak bulacaksınız. Düzenli ifade bir
+harf öbeğinde ki bir metin değiştirmek, form doğrulamak, bir desen eşleşmesine
+dayalı harf öbeğinden bir alt harf öbeği ayıklamak ve çok daha fazlası için
+kullanılır.
+
+Bir uygulama yazdığınızı hayal edin ve bir kullanıcı adını seçtiğinde, bu
+kullanıcı adı için kurallar belirlemek istiyorsunuz. Kullanıcı adının harfler,
+sayılar, altçizgiler ve tireler içermesine izin vermek, ayrıca, kullanıcı
+adındaki karakter sayısını sınırlamak istiyorsunuz, böylece çirkin görünmeyecek.
+Böyle durumlarda kullanıcı adını doğrulamak için aşağıdaki düzenli ifadeyi
+kullanıyoruz:
@@ -85,7 +95,10 @@ Bir düzenli ifade bir metin içinde arama yapabilmek için kullandığımız bi
[Düzenli ifadeyi test edin](https://regex101.com/r/dmRygT/1)
-`123` düzenli ifadesi `123` harf öbeğiyle eşleşir. Düzenli ifade birbiri ardına, girilen harf öbeğindeki her karakter düzenli ifadenin içindeki her karakterle karşılaştırılarak eşleştirilir. Düzenli ifadeler normal olarak büyük/küçük harfe duyarlıdırlar, yani `The` düzenli ifadesi `the` harf öbeğiyle eşleşmez.
+`123` düzenli ifadesi `123` harf öbeğiyle eşleşir. Düzenli ifade birbiri ardına,
+girilen harf öbeğindeki her karakter düzenli ifadenin içindeki her karakterle
+karşılaştırılarak eşleştirilir. Düzenli ifadeler normal olarak büyük/küçük harfe
+duyarlıdırlar, yani `The` düzenli ifadesi `the` harf öbeğiyle eşleşmez.
"The" => The fat cat sat on the mat.
@@ -95,29 +108,33 @@ Bir düzenli ifade bir metin içinde arama yapabilmek için kullandığımız bi
## 2. Meta Karakterler
-Meta karakterler düzenli ifadelerin yapı taşlarıdırlar. Meta karakterler kendileri için değil bunun yerine bazı özel yollarla yorumlanırlar. Bazı meta karakterler özel anlamları vardır ve bunlar köşeli parantez içinde yazılırlar.
+Meta karakterler düzenli ifadelerin yapı taşlarıdırlar. Meta karakterler
+kendileri için değil bunun yerine bazı özel yollarla yorumlanırlar. Bazı meta
+karakterler özel anlamları vardır ve bunlar köşeli parantez içinde yazılırlar.
Meta karakterler aşağıdaki gibidir:
|Meta karakter|Açıklama|
|:----:|----|
-|.|Satır sonuc hariç herhangi bir karakterle eşleşir.|
+|.|Satır sonuç hariç herhangi bir karakterle eşleşir.|
|[ ]|Köşeli parantezler arasında bulunan herhangi bir karakterle eşleşir.|
|[^ ]|Köşeli parantez içerisinde yer alan `^` işaretinden sonra girilen karakterler haricindeki karakterlerle eşleşir.|
|*|Kendisinden önce yazılan karakterin sıfır veya daha fazla tekrarı ile eşleşir.|
-|+|Kendisinden önce yazılan karakterin bir veya daha fazla tekrarı ile eşleşir.|
+|+|Kendisinden önce yazılan karakterin bir veya daha fazla olan tekrarı ile eşleşir.|
|?|Kendisinden önce yazılan karakterin varlık durumunu opsiyonel kılar.|
|{n,m}|Kendisinden önce yazılan karakterin en az `n` en fazla `m` değeri kadar olmasını ifade eder.|
|(xyz)|Verilen sırayla `xyz` karakterleriyle eşleşir.|
-|||`|` karakterinden önce veya sonra verilen ifadelerin herhangi biriyle eşleşir. Or anlamı verir.|
-|\|Sonraki karakteri kaçırır. Bu, ayrılmış karakterleri eşleştirmenizi sağlar [ ] ( ) { } . * + ? ^ $ \ ||
+||| Karakterden önce veya sonra verilen ifadelerin herhangi biriyle eşleşebilir. İfadeye Yada anlamı katar.|
+|\|[ ] ( ) { } . * + ? ^ $ \ | özel karakterin aranmasını sağlar.|
|^|Girilen verinin başlangıcını ifade eder.|
-|$|Girilen veririnin sonunu ifade eder.|
+|$|Girilen verinin sonunu ifade eder.|
## 2.1 Nokta
-Nokta `.` meta karakterin en basit örneğidir. `.` meta karakteri satır başlangıcı hariç herhangi bir karakterle eşleşir.
-Örneğin, `.ar` düzenli ifadesinin anlamı: herhangi bir karakterin ardından `a` harfi ve `r` harfi gelir.
+Nokta `.` meta karakterlerin en basit örneğidir. `.` meta karakteri satır
+başlangıcı hariç herhangi bir karakterle eşleşir. Örneğin, `.ar` düzenli
+ifadesinin anlamı: herhangi bir karakterin ardından `a` harfi ve `r` harfi
+gelir.
".ar" => The car parked in the garage.
@@ -127,10 +144,13 @@ Nokta `.` meta karakterin en basit örneğidir. `.` meta karakteri satır başla
## 2.2 Karakter Takımı
-Karakter takımları aryıca Karakter sınıfı olarak bilinir. Karakter takımlarını belirtmek için köşeli ayraçlar kullanılır.
-Karakterin aralığını belirtmek için bir karakter takımında tire kullanın. Köşeli parantezlerdeki karakter aralığının sıralaması önemli değildir.
+Karakter takımları aryıca Karakter sınıfı olarak bilinir. Karakter takımlarını
+belirtmek için köşeli ayraçlar kullanılır. Karakterin aralığını belirtmek için
+bir karakter takımında tire kullanın. Köşeli parantezlerdeki karakter aralığının
+sıralaması önemli değildir.
-Örneğin, `[Tt]he` düzenli ifadesinin anlamı: bir büyük `T` veya küçük `t` harflerinin ardından sırasıyla `h` ve `e` harfi gelir.
+Örneğin, `[Tt]he` düzenli ifadesinin anlamı: bir büyük `T` veya küçük `t`
+harflerinin ardından sırasıyla `h` ve `e` harfi gelir.
"[Tt]he" => The car parked in the garage.
@@ -138,9 +158,11 @@ Karakterin aralığını belirtmek için bir karakter takımında tire kullanın
[Düzenli ifadeyi test edin](https://regex101.com/r/2ITLQ4/1)
-Bununla birlikte, bir karakter takımı içerisindeki bir periyot bir tam periyot demektir.
+Bununla birlikte, bir karakter takımı içerisindeki bir periyot bir tam periyot
+demektir.
-`ar[.]` düzenli ifadesinin anlamı: Küçük `a` karakteri ardından `r` harfi gelir, ardından bir `.` karakteri gelir.
+`ar[.]` düzenli ifadesinin anlamı: Küçük `a` karakteri ardından `r` harfi gelir,
+ardından bir `.` karakteri gelir.
"ar[.]" => A garage is a good place to park a car.
@@ -150,9 +172,11 @@ Bununla birlikte, bir karakter takımı içerisindeki bir periyot bir tam periyo
### 2.2.1 Negatiflenmiş karakter seti
-Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, ama köşeli parantez içinde kullanıldığında verilen karakter takımını hariç tutar.
+Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, ama köşeli
+parantez içinde kullanıldığında verilen karakter takımını hariç tutar.
-Örneğin, `[^c]ar` ifadesinin anlamı: `c` harfinden hariç herhangi bir harfin ardından `a`, ardından `r` gelir.
+Örneğin, `[^c]ar` ifadesinin anlamı: `c` harfinden hariç herhangi bir harfin
+ardından `a`, ardından `r` gelir.
"[^c]ar" => The car parked in the garage.
@@ -162,14 +186,19 @@ Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, am
## 2.3 Tekrarlar
-`+`, `*` ya da `?` meta karakterlerinden sonra bir alt desenin kaç defa tekrar edebileceğini belirtmek için kullanılır. Bu meta karakterler farklı durumlarda farklı davranırlar.
+`+`, `*` ya da `?` meta karakterlerinden sonra bir alt desenin kaç defa tekrar
+edebileceğini belirtmek için kullanılır. Bu meta karakterler farklı durumlarda
+farklı davranırlar.
### 2.3.1 Yıldız İşareti
-`*` sembolü, kendinden önce girilen eşlemenin sıfır veya daha fazla tekrarıyla eşleşir. Ama bir karakter seti ya da sınıf sonrasına girildiğinde, tüm karakter setinin tekrarlarını bulur.
+`*` sembolü, kendinden önce girilen eşlemenin sıfır veya daha fazla tekrarıyla
+eşleşir. Ama bir karakter seti ya da sınıf sonrasına girildiğinde, tüm karakter
+setinin tekrarlarını bulur.
-`a*` düzenli ifadesinin anlamı: `a` karakterinin sıfır veya daha fazla tekrarı.
-`[a-z]*` düzenli ifadesinin anlamı: bir satırdaki herhangi bir sayıdaki küçük harfler.
+`a*` düzenli ifadesinin anlamı: `a` karakterinin sıfır veya daha fazla
+tekrarları, `[a-z]*` düzenli ifadesinin anlamı ise bir satırdaki herhangi bir
+sayıdaki küçük harfler anlamına gelir.
"[a-z]*" => The car parked in the garage #21.
@@ -177,9 +206,13 @@ Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, am
[Düzenli ifadeyi test edin](https://regex101.com/r/7m8me5/1)
-`*` sembolü `.` meta karakteri ile `.*` karakterinin herhangi harf öbeğine eşleştirmek için kullanılabilir. `*` sembolü boşluk karakteriyle `\s` bir harf öbeğinde boşluk karakterlerini eşleştirmek için kullanılabilir.
+`*` sembolü `.` meta karakteri ile `.*` karakterinin herhangi harf öbeğine
+eşleştirmek için kullanılabilir. `*` sembolü boşluk karakteriyle `\s` bir harf
+öbeğinde boşluk karakterlerini eşleştirmek için kullanılabilir.
-Örneğin, `\s*cat\s*` düzenli ifadesinin anlamı: sıfır veya daha fazla boşluk ardından küçük `c` karakteri gelir, ardından küçük `a` karakteri gelir, ardından küçük `t` karakteri gelir, ardından sıfır veya daha fazla boşluk gelir.
+Örneğin, `\s*cat\s*` düzenli ifadesinin anlamı: sıfır veya daha fazla boşluk
+ardından küçük `c` karakteri gelir, ardından küçük `a` karakteri gelir, ardından
+küçük `t` karakteri gelir, ardından sıfır veya daha fazla boşluk gelir.
"\s*cat\s*" => The fat cat sat on the concatenation.
@@ -189,10 +222,13 @@ Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, am
### 2.3.2 Artı İşareti
-`+` sembolü, kendinden önce girilen eşlemenin bir veya daha fazla tekrarıyla eşleşir.
+`+` sembolü, kendinden önce girilen eşlemenin bir veya daha fazla tekrarıyla
+eşleşir.
-Örneğin, `c.+t` ifadesinin anlamı: küçük `c` harfi, ardından en az bir karakter gelir, ardından küçük `t` karakteri gelir.
-Örnekte açıklamak gereken önemli nokta: `t` harfi cümledeki son `t` harfi olacaktır. `c` ve `t` harfi arasında en az bir karakter vardır.
+Örneğin, `c.+t` ifadesinin anlamı: küçük `c` harfi, ardından en az bir karakter
+gelir, ardından küçük `t` karakteri gelir. Örnekte açıklamak gereken önemli
+nokta: `t` harfi cümledeki son `t` harfi olacaktır. `c` ve `t` harfi arasında en
+az bir karakter vardır.
"c.+t" => The fat cat sat on the mat.
@@ -202,9 +238,12 @@ Genellikle, şapka `^` sembolü harf öbeğinin başlangıcını temsil eder, am
### 2.3.3 Soru İşareti
-Düzenli ifadelerde `?` meta karakterinden önce girilen karakteri opsiyonel olarak tanımlar. Bu sembol önce gelen karakterin sıfır veya bir örbeğiyle eşleşir.
+Düzenli ifadelerde `?` meta karakterinden önce girilen karakteri opsiyonel
+olarak tanımlar. Bu sembol önce gelen karakterin sıfır veya bir örbeğiyle
+eşleşir.
-Örneğin, `[T]?he` ifadesinin anlamı: opsiyonel büyük `T` harfi, ardından küçük `h` karakteri gelir, ardından küçük `e` karakteri gelir.
+Örneğin, `[T]?he` ifadesinin anlamı: opsiyonel büyük `T` harfi, ardından küçük
+`h` karakteri gelir, ardından küçük `e` karakteri gelir.
"[T]he" => The car is parked in the garage.
@@ -220,9 +259,12 @@ Düzenli ifadelerde `?` meta karakterinden önce girilen karakteri opsiyonel ola
## 2.4 Süslü Parantez
-Düzenli ifadelerde miktar belirliyiciler olarakda bilinen süslü parantezler, bir karakterin veya karakter grubunun kaç defa tekrar edebileceğini belirtmek için kullanılırlar.
+Düzenli ifadelerde miktar belirliyiciler olarakda bilinen süslü parantezler, bir
+karakterin veya karakter grubunun kaç defa tekrar edebileceğini belirtmek için
+kullanılırlar.
-Örneğin, `[0-9]{2,3}` ifadesinin anlamı: 0 ile 0 aralığındaki karakterlerden, en az 2 en fazla 3 defa ile eşleş.
+Örneğin, `[0-9]{2,3}` ifadesinin anlamı: 0 ile 0 aralığındaki karakterlerden, en
+az 2 en fazla 3 defa ile eşleş.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -249,13 +291,18 @@ Düzenli ifadeden virgülü kaldırırsak `[0-9]{3}`: doğrudan 3 defa eşleşir
## 2.5 Karakter Grubu
-Karakter grubu parantezler içine yazılmış alt desenler grubudur. Daha önce tasarım deseninde değindiğimiz gibi, bir karakterden önce bir miktar belirleyici koyarsak önceki karakteri tekrar eder. Fakat miktar belirleyiciyi bir karakter grubundan sonra koyarsak tüm karakter grubunu tekrarlar.
+Karakter grubu parantezler içine yazılmış alt desenler grubudur. Daha önce
+tasarım deseninde değindiğimiz gibi, bir karakterden önce bir miktar belirleyici
+koyarsak önceki karakteri tekrar eder. Fakat miktar belirleyiciyi bir karakter
+grubundan sonra koyarsak tüm karakter grubunu tekrarlar.
-Örneğin: `(ab)*` düzenli ifadesi "ab" karakterinin sıfır veya daha fazla tekrarıyla eşleşir.
+Örneğin: `(ab)*` düzenli ifadesi "ab" karakterinin sıfır veya daha fazla
+tekrarıyla eşleşir.
Ayrıca karakter grubu içinde `|` meta karakterini kullanabiliriz.
-Örneğin, `(c|g|p)ar` düzenli ifadesinin anlamı: küçük `c`, `g` veya `p` karakteri, ardından `a` karakteri, ardından `r` karakteri gelir.
+Örneğin, `(c|g|p)ar` düzenli ifadesinin anlamı: küçük `c`, `g` veya `p`
+karakteri, ardından `a` karakteri, ardından `r` karakteri gelir.
"(c|g|p)ar" => The car is parked in the garage.
@@ -265,9 +312,15 @@ Ayrıca karakter grubu içinde `|` meta karakterini kullanabiliriz.
## 2.6 Değişim
-Düzenli ifadede dik çizgi alternasyon(değişim, dönüşüm) tanımlamak için kullanılır. Alternasyon birden fazla ifade arasındaki bir koşul gibidir. Şu an, karakter grubu ve alternasyonun aynı şekilde çalıştığını düşünüyor olabilirsiniz. Ama, Karakter grubu ve alternasyon arasındaki büyük fark karakter grubu karakter düzeyinde çalışır ama alternasyon ifade düzeyinde çalışır.
+Düzenli ifadede dik çizgi alternasyon(değişim, dönüşüm) tanımlamak için
+kullanılır. Alternasyon birden fazla ifade arasındaki bir koşul gibidir. Şu an,
+karakter grubu ve alternasyonun aynı şekilde çalıştığını düşünüyor
+olabilirsiniz. Ama, Karakter grubu ve alternasyon arasındaki büyük fark karakter
+grubu karakter düzeyinde çalışır ama alternasyon ifade düzeyinde çalışır.
-Örneğin, `(T|t)he|car` düzenli ifadesinin anlamı: Büyük `T` ya da küçük `t` karakteri, ardından küçük `h` karakteri, ardından küçük `e` ya da `c` karakteri, ardından küçük `a`, ardından küçük `r` karakteri gelir.
+Örneğin, `(T|t)he|car` düzenli ifadesinin anlamı: Büyük `T` ya da küçük `t`
+karakteri, ardından küçük `h` karakteri, ardından küçük `e` ya da `c` karakteri,
+ardından küçük `a`, ardından küçük `r` karakteri gelir.
"(T|t)he|car" => The car is parked in the garage.
@@ -277,12 +330,19 @@ Düzenli ifadede dik çizgi alternasyon(değişim, dönüşüm) tanımlamak içi
## 2.7 Özel Karakter Hariç Tutma
-`\` işareti sonraki karakteri hariç tutmak için kullanılır. Bu bir semboülü ayrılmış karakterlerde `{ } [ ] / \ + * . $ ^ | ?` dahil olmak üzere eşleşen bir karakter olarak belirtmemizi sağlar. Bir özel karakteri eşleşen bir karakter olarak kullanmak için önüne `\` işareti getirin.
+`\` işareti sonraki karakteri hariç tutmak için kullanılır. Bu bir semboülü
+ayrılmış karakterlerde `{ } [ ] / \ + * . $ ^ | ?` dahil olmak üzere eşleşen bir
+karakter olarak belirtmemizi sağlar. Bir özel karakteri eşleşen bir karakter
+olarak kullanmak için önüne `\` işareti getirin.
-Örneğin, `.` düzenli ifadesi yeni satır hariç herhangi bir karakteri eşleştirmek için kullanılır.
-Bir harf öbeği içinde nokta `.` karakterini yakalamak için `.` ayrılmış karakterini hariç tutmamız gerekir. Bunun için nokta önüne `\` işaretini koymamız gereklidir.
+Örneğin, `.` düzenli ifadesi yeni satır hariç herhangi bir karakteri eşleştirmek
+için kullanılır. Bir harf öbeği içinde nokta `.` karakterini yakalamak için `.`
+ayrılmış karakterini hariç tutmamız gerekir. Bunun için nokta önüne `\`
+işaretini koymamız gereklidir.
-`(f|c|m)at\.?` düzenli ifadesinin anlamı: küçük `f`, `c`ya da `m` harfi, ardından küçük `a` harfi, ardından küçük `t` harfi, ardından opsiyonel `.` karakteri gelir.
+`(f|c|m)at\.?` düzenli ifadesinin anlamı: küçük `f`, `c`ya da `m` harfi,
+ardından küçük `a` harfi, ardından küçük `t` harfi, ardından opsiyonel `.`
+karakteri gelir.
"(f|c|m)at\.?" => The fat cat sat on the mat.
@@ -292,17 +352,26 @@ Bir harf öbeği içinde nokta `.` karakterini yakalamak için `.` ayrılmış k
## 2.8 Sabitleyiciler
-Düzenli ifadelerde, eşleşen sembolün girilen harf öbeğinin başlangıç sembolü veya bitiş sembolü olup olmadığını kontrol etmek için sabitleyicileri kullanırız.
-Sabitleyiciler iki çeşittir: İlk çeşit eşleşen karakterin girişin ilk karakteri olup olmadığını kontrol eden şapka `^` karakteri, ve ikinci çeşit eşleşen karakterin girişin son karakteri olup olmadığını kontrol eden dolar `$` karakteridir.
+Düzenli ifadelerde, eşleşen sembolün girilen harf öbeğinin başlangıç sembolü
+veya bitiş sembolü olup olmadığını kontrol etmek için sabitleyicileri
+kullanırız. Sabitleyiciler iki çeşittir: İlk çeşit, eşleşen karakterin girişin
+ilk karakteri olup olmadığını kontrol eden şapka `^` karakteri, ikinci çeşit ise
+eşleşen karakterin girişin son karakteri olup olmadığını kontrol eden dolar `$`
+karakteridir.
### 2.8.1 Şapka İşareti
-Şapka `^` işareti eşleşen karakterin giriş harf öbeğinin ilk karakteri olup olmadığını kontrol etmek için kullanılır.
-Eğer `^a` düzenli ifadesini `abc` harf öbeğine uygularsak `a` ile eşleşir. Ama `^b` ifadesini uygularsak bir eşleşme bulamayız. Bunun nedeni `abc` harf öbeğinde `b` karakterinin başlangıç karakteri olmamasıdır.
+Şapka `^` işareti eşleşen karakterin giriş harf öbeğinin ilk karakteri olup
+olmadığını kontrol etmek için kullanılır. Eğer `^a` düzenli ifadesini `abc` harf
+öbeğine uygularsak `a` ile eşleşir. Ama `^b` ifadesini uygularsak bir eşleşme
+bulamayız. Bunun nedeni `abc` harf öbeğinde `b` karakterinin başlangıç karakteri
+olmamasıdır.
-Bir başka örnek üzerinden ilerlersek,
+Bir başka örnek üzerinden ilerlersek,
-`^(T|t)he` düzenli ifadesinin anlamı: büyük `T` ya da `t` karakteri giriş harf öbeğinin ilk karakteri olmak üzere, ardından küçük `h`, ardından küçük `e` karakteri gelir.
+`^(T|t)he` düzenli ifadesinin anlamı: büyük `T` ya da `t` karakteri giriş harf
+öbeğinin ilk karakteri olmak üzere, ardından küçük `h`, ardından küçük `e`
+karakteri gelir.
"(T|t)he" => The car is parked in the garage.
@@ -318,9 +387,12 @@ Bir başka örnek üzerinden ilerlersek,
### 2.8.2 Dolar İşareti
-Dolar `$` işareti eşleşen karakterin giriş harf öbeğinin son karakteri olup olmadığını kontrol etmek için kullanılır.
+Dolar `$` işareti eşleşen karakterin giriş harf öbeğinin son karakteri olup
+olmadığını kontrol etmek için kullanılır.
-Örneğin, `(at\.)$` ifadesinin anlamı: küçük bir `a` karakteri, ardından küçük bir `t` karakteri, ardıdan nokta `.` karakteri gelir ve bu eşleşme harf öbeğinin sonunda olmalıdır.
+Örneğin, `(at\.)$` ifadesinin anlamı: küçük bir `a` karakteri, ardından küçük
+bir `t` karakteri, ardıdan nokta `.` karakteri gelir ve bu eşleşme harf öbeğinin
+sonunda olmalıdır.
"(at\.)" => The fat cat. sat. on the mat.
@@ -336,9 +408,10 @@ Dolar `$` işareti eşleşen karakterin giriş harf öbeğinin son karakteri olu
## 3. Kısaltma Karakter Takımları
-Regex, yaygın olarak kullanılan düzenli ifadeler için uygun kısaltmalar sunan sık kullanılan karakter setleri için kısaltmalar sağlar.
+Regex, sık olarak kullanılan düzenli ifadeler için özel karakter setleri ve
+kısaltmalar sağlar.
-Kullanılan karakter setleri kısaltmaları aşağıdaki gibidir:
+Kullanılan karakter setlerinin kısaltmaları aşağıdaki gibidir:
|Kısaltma|Açıklama|
|:----:|----|
@@ -352,13 +425,16 @@ Kullanılan karakter setleri kısaltmaları aşağıdaki gibidir:
## 4. Bakınmak
-Bakınma sembolleri, bir ifade öncesinde veya sonrasında başka bir ifademiz olduğunda kullanılırlar.
+Bakınma sembolleri, bir ifade öncesinde veya sonrasında başka bir ifademiz
+olduğunda kullanılırlar.
-Örneğin, `$4.44 ve $10.88` girişlerinden `$` karakteri önündeki tüm sayıları almak istiyoruz, bu durumda `(?<=\$)[0-9\.]*` ifadesini kullanırız.
+Örneğin, `$4.44 ve $10.88` girişlerinden `$` karakteri önündeki tüm sayıları
+almak istiyoruz, bu durumda `(?<=\$)[0-9\.]*` ifadesini kullanırız.
-`(?<=\$)[0-9\.]*` ifadesinin anlamı: `.` karakterini içeren ve `$` karakteriyle devam eden tüm sayıları al.
+`(?<=\$)[0-9\.]*` ifadesinin anlamı: `.` karakterini içeren ve `$` karakteriyle
+devam eden tüm sayıları al demektir.
-Düzenli ifadelerde kullanılan bakınma sembolleri aşağıdadır:
+Düzenli ifadelerde kullanılan bakınma sembolleri aşadaki gibidir:
|Sembol|Açıklama|
|:----:|----|
@@ -369,9 +445,16 @@ Düzenli ifadelerde kullanılan bakınma sembolleri aşağıdadır:
### 4.1 Positive Lookahead
-Positive Lookahead, ifadenin ilk bölümü bakınma ifadesiyle devam etmesi gerektiğini savunur. Bulunan eşleşme yalnızca ifadenin ilk bölümüyle eşleşen metin içerir. Olumlu bir bakınma tanımlamak için, içinde eşittir işareti yer alan parantezler `(?=...)` şeklinde kullanılır. Bakınma ifadesi parantezler içinde eşittir işaretinden sonra yazılır.
+Positive Lookahead, ifadenin ilk bölümü bakınma ifadesiyle devam etmesi
+gerektiğini savunur. Bulunan eşleşme yalnızca ifadenin ilk bölümüyle eşleşen
+metin içerir. Olumlu bir bakınma tanımlamak için, içinde eşittir işareti yer
+alan parantezler `(?=...)` şeklinde kullanılır. Bakınma ifadesi parantezler
+içinde eşittir işaretinden sonra yazılır.
-Örneğin, `[T|t]he(?=\sfat)` ifadesinin anlamı: opsiyonel küçük bir `t` ya da büyük `T` harfi, ardından `h` harfi gelir, ardından `e` harfi gelir. Parantez içinde ise bu dizilimin bir boşluk karakterinden sonra `fat` öbeğiyle devam edeceğini tanımlıyoruz.
+Örneğin, `[T|t]he(?=\sfat)` ifadesinin anlamı: opsiyonel küçük bir `t` ya da
+büyük `T` harfi, ardından `h` harfi gelir, ardından `e` harfi gelir. Parantez
+içinde ise bu dizilimin bir boşluk karakterinden sonra `fat` öbeğiyle devam
+edeceğini tanımlıyoruz.
"[T|t]he(?=\sfat)" => The fat cat sat on the mat.
@@ -381,9 +464,13 @@ Positive Lookahead, ifadenin ilk bölümü bakınma ifadesiyle devam etmesi gere
### 4.2 Negative Lookahead
-Negative Lookahead sembolü positive lookahead tersine, verdiğimiz desenle devam etmemesi durumunda eşleşir. Bu sembol positive lookahead gibi tanımlanır ama `=` işareti yerine `!` kullanılır.
+Negative Lookahead sembolü positive lookahead tersine, verdiğimiz desenle devam
+etmemesi durumunda eşleşir. Bu sembol positive lookahead gibi tanımlanır ama `=`
+işareti yerine `!` kullanılır.
-`[T|t]he(?!\sfat)` ifadesinin anlamı: opsiyonel küçük bir `t` ya da büyük `T` harfi, ardından `h` harfi gelir, ardından `e` harfi gelir, ardından öncesinde boşluk olan bir `fat` öbeği olmamalıdır.
+`[T|t]he(?!\sfat)` ifadesinin anlamı: opsiyonel küçük bir `t` ya da büyük `T`
+harfi, ardından `h` harfi gelir, ardından `e` harfi gelir, ardından öncesinde
+boşluk olan bir `fat` öbeği olmamalıdır.
@@ -394,9 +481,11 @@ Negative Lookahead sembolü positive lookahead tersine, verdiğimiz desenle deva
### 4.3 Positive Lookbehind
-Positive Lookbehind, belirli bir desenden önceki eşleşmeleri almak için kullanılır. `(?<=...)` ile gösterilir.
+Positive Lookbehind, belirli bir desenden önceki eşleşmeleri almak için
+kullanılır. `(?<=...)` ile gösterilir.
-Örneğin, `(?<=[T|t]he\s)(fat|mat)` ifadesinin anlamı: Öncesinde `The` veya `the` öbekleri olan tüm `fat` veya `mat` öbeklerini getir.
+Örneğin, `(?<=[T|t]he\s)(fat|mat)` ifadesinin anlamı: Öncesinde `The` veya `the`
+öbekleri olan tüm `fat` veya `mat` öbeklerini getir.
"(?<=[T|t]he\s)(fat|mat)" => The fat cat sat on the mat.
@@ -406,9 +495,11 @@ Positive Lookbehind, belirli bir desenden önceki eşleşmeleri almak için kull
### 4.4 Negative Lookbehind
-Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak için kullanılır. `(?<=!..)` ile gösterilir.
+Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak için
+kullanılır. `(?<=!..)` ile gösterilir.
-Örneğin, `(?
"(?<![T|t]he\s)(cat)" => The cat sat on cat.
@@ -418,7 +509,10 @@ Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak içi
## 5. İşaretler
-İşaretler ayrıca düzenleyiciler olarak bilinirler, çünkü onlar bir düzenli ifadenin çıktısını düzenlerler. Bu işaretler herhangi bir sırada veya kombinasyonda kullanılabilirler, ve bunlar Düzenli İfadelerin ayrılmaz bir parçasıdırlar.
+İşaretler ayrıca düzenleyiciler olarak bilinirler, çünkü onlar bir düzenli
+ifadenin çıktısını düzenlerler. Bu işaretler herhangi bir sırada veya
+kombinasyonda kullanılabilirler, ve bunlar Düzenli İfadelerin ayrılmaz bir
+parçasıdırlar.
|İşaret|Açıklama|
|:----:|----|
@@ -428,9 +522,13 @@ Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak içi
### 5.1 Büyük/Küçük harf duyarlılığı
-`ì` işaretleyicisi büyük/küçük harfe duyarsız eşleştirme yapmak için kullanılır.
+`i` işaretleyicisi büyük/küçük harfe duyarsız eşleştirme yapmak için kullanılır.
-Örneğin, `/The/gi` ifadesi: büyük `T` harfi, ardından küçük `h` harfi, ardından küçük `e` harfi gelir. ifadenin sonunda yer alan `i` işareti büyük-küçük harfe karşı duyarsız olması gerektiğini belirtir. Ayrıca `g` işaretinide kullandığımızı görebilirsiniz, tüm text içinde bu aramayı yapmak istediğimiz için `g` işaretini ayrıca belirtiyoruz.
+Örneğin, `/The/gi` ifadesi: büyük `T` harfi, ardından küçük `h` harfi, ardından
+küçük `e` harfi gelir. ifadenin sonunda yer alan `i` işareti büyük-küçük harfe
+karşı duyarsız olması gerektiğini belirtir. Ayrıca `g` işaretinide
+kullandığımızı görebilirsiniz, tüm text içinde bu aramayı yapmak istediğimiz
+için `g` işaretini ayrıca belirtiyoruz.
"The" => The fat cat sat on the mat.
@@ -446,7 +544,8 @@ Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak içi
### 5.2 Genel Arama
-`g` işareti bir giriş içinde eşleşen tüm varsayonları bulmak için kullanılır. `g` işareti kullanılmazsa ilk eşleşme bulunduktan sonra arama sona erer.
+`g` işareti bir giriş içinde eşleşen tüm varsayonları bulmak için kullanılır.
+`g` işareti kullanılmazsa ilk eşleşme bulunduktan sonra arama sona erer.
"/.(at)/" => The fat cat sat on the mat.
@@ -462,9 +561,15 @@ Negative Lookbehind, belirli bir desenden önce olmayan eşleşmeleri almak içi
### 5.3 Çok Satırlı
-`m` işareti çok satırlı bir eşleşme sağlamak için kullanılır. Daha önce sabitleyicilerde gördüğümüz gibi `(^, $)` sembolleri aradığımız desenin harf öbeğinin başında veya sonunda olup olmadığını kontrol etmemiz için kullanılır. Bu sabitleyicilerin tüm satırlarda çalışması için `m` işaretini kullanırız.
+`m` işareti çok satırlı bir eşleşme bulmak için kullanılır. Daha önce
+sabitleyicilerde gördüğümüz gibi `(^, $)` sembolleri aradığımız desenin harf
+öbeğinin başında veya sonunda olup olmadığını kontrol etmemiz için kullanılır.
+Bu sabitleyicilerin tüm satırlarda çalışması için `m` işaretini kullanırız.
-Örneğin, `/at(.)?$/gm` ifadesinin anlamı: küçük `a` harfi, ardından küçük `t` harfi gelir, ardından opsiyonel olarak yeni satır hariç herhangi birşey gelebilir. `m` işaretini kullandığımız için bir girişin her satırının sonunda eşleştirir.
+Örneğin, `/at(.)?$/gm` ifadesinin anlamı: küçük `a` harfi, ardından küçük `t`
+harfi gelir, ardından opsiyonel olarak yeni satır hariç herhangi birşey
+gelebilir. `m` işaretini kullandığımız için bir girişin her satırının sonunda
+eşleştirir.
"/.at(.)?$/" => The fat
From 0435c394dccd8dbd230559f9ea2443781ab73b4a Mon Sep 17 00:00:00 2001
From: guiemi
Date: Fri, 8 Feb 2019 16:22:00 -0200
Subject: [PATCH 044/162] =?UTF-8?q?Corrige=20a=20ocorr=C3=AAncia=20de=20cr?=
=?UTF-8?q?ases=20no=20texto.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
(EN) Fixes some grammar mistakes related to the crase.
---
translations/README-pt_BR.md | 41 ++++++++++++++++++------------------
1 file changed, 21 insertions(+), 20 deletions(-)
diff --git a/translations/README-pt_BR.md b/translations/README-pt_BR.md
index 7fecb53f..a8e2f61d 100644
--- a/translations/README-pt_BR.md
+++ b/translations/README-pt_BR.md
@@ -33,11 +33,12 @@
> Expressão Regular é um grupo de caracteres ou símbolos utilizado para encontrar um padrão específico a partir de um texto.
-Uma expressão regular é um padrão que é comparado com uma cadeia de caracteres da esquerda para a direita. A expressão "Expressão regular" é longa e difícil de falar, você geralmente vai encontrar o termo abreviado como "regex" ou "regexp". Expressões regulares são usadas para substituir um texto dentro de uma string, validar formulários, extrair uma parte de uma string baseada em um padrão encontrado e muito mais.
+Uma expressão regular é um padrão que é comparado com uma cadeia de caracteres da esquerda para a direita. A expressão "Expressão regular" é longa e difícil de falar; você geralmente vai encontrar o termo abreviado como "regex" ou "regexp". Expressões regulares são usadas para substituir um texto dentro de uma string, validar formulários, extrair uma parte de uma string baseada em um padrão encontrado e muito mais.
Imagine que você está escrevendo uma aplicação e quer colocar regras para quando um usuário escolher seu username. Nós queremos permitir que o username contenha letras, números, underlines e hífens. Nós também queremos limitar o número de caracteres para não ficar muito feio. Então usamos a seguinte expressão regular para validar o username:
+
@@ -83,7 +84,7 @@ Uma expressão regular é apenas um padrão de caracteres que usamos para fazer
[Teste a RegExp](https://regex101.com/r/dmRygT/1)
-A expressão regular `123` corresponde a string `123`. A expressão regular é comparada com uma string de entrada, comparando cada caractere da expressão regular para cada caractere da string de entrada, um após o outro. Expressões regulares são normalmente case-sensitive (sensíveis à maiúsculas), então a expressão regular `The` não vai bater com a string `the`.
+A expressão regular `123` corresponde à string `123`. A expressão regular é comparada com uma string de entrada, comparando cada caractere da expressão regular para cada caractere da string de entrada, um após o outro. Expressões regulares são normalmente case-sensitive (sensíveis a maiúsculas), então a expressão regular `The` não vai bater com a string `the`.
"The" => The fat cat sat on the mat.
@@ -101,19 +102,19 @@ Os metacaracteres são os seguintes:
|.|Corresponde a qualquer caractere, exceto uma quebra de linha|
|[ ]|Classe de caracteres. Corresponde a qualquer caractere contido dentro dos colchetes.|
|[^ ]|Classe de caracteres negada. Corresponde a qualquer caractere que não está contido dentro dos colchetes.|
-|*|Corresponde à 0 ou mais repetições do símbolo anterior.|
-|+|Corresponde à 1 ou mais repetições do símbolo anterior.|
+|*|Corresponde a 0 ou mais repetições do símbolo anterior.|
+|+|Corresponde a 1 ou mais repetições do símbolo anterior.|
|?|Faz com que o símbolo anterior seja opcional.|
-|{n,m}|Chaves. Corresponde à no mínimo "n" mas não mais que "m" repetições do símbolo anterior.|
+|{n,m}|Chaves. Corresponde a no mínimo "n" mas não mais que "m" repetições do símbolo anterior.|
|(xyz)|Grupo de caracteres. Corresponde aos caracteres xyz nesta exata ordem.|
-|||Alternância. Corresponde os caracteres antes ou os caracteres depois do símbolo|
+|||Alternância. Corresponde aos caracteres antes ou os caracteres depois do símbolo|
|\|Escapa o próximo caractere. Isso permite você utilizar os caracteres reservados [ ] ( ) { } . * + ? ^ $ \ ||
|^|Corresponde ao início da entrada.|
|$|Corresponde ao final da entrada.|
## 2.1 Ponto final
-O ponto final `.` é um simples exemplo de metacaracteres. O metacaractere `.` corresponde à qualquer caractere sozinho. Ele não se iguala ao Enter e à quebra de linha. Por exemplo, a expressão regular `.ar` significa: qualquer caractere, seguido da letra `a`, seguida da letra `r`.
+O ponto final `.` é um simples exemplo de metacaracteres. O metacaractere `.` corresponde a qualquer caractere sozinho. Ele não se iguala ao Enter e à quebra de linha. Por exemplo, a expressão regular `.ar` significa: qualquer caractere, seguido da letra `a`, seguida da letra `r`.
".ar" => The car parked in the garage.
@@ -155,7 +156,7 @@ Seguindo os metacaracteres `+`, `*` ou `?` são utilizados para especificar quan
### 2.3.1 O Asterisco
-O símbolo `*` corresponde à zero ou mais repetições do padrão antecedente. A expressão regular `a*` significa: zero ou mais repetições do caractere minúsculo precedente `a`. Mas se o asterisco aparecer depois de um conjunto de caracteres, ou classe de caracteres, ele irá procurar as repetições de todo o conjunto. Por exemplo, a expressão regular `[a-z]*` significa: qualquer quantidade de letras minúsculas numa linha.
+O símbolo `*` corresponde a zero ou mais repetições do padrão antecedente. A expressão regular `a*` significa: zero ou mais repetições do caractere minúsculo precedente `a`. Mas se o asterisco aparecer depois de um conjunto de caracteres, ou classe de caracteres, ele irá procurar as repetições de todo o conjunto. Por exemplo, a expressão regular `[a-z]*` significa: qualquer quantidade de letras minúsculas numa linha.
"[a-z]*" => The car parked in the garage #21.
@@ -173,7 +174,7 @@ O símbolo `*` pode ser usado junto do metacaractere `.` para encontrar qualquer
### 2.3.2 O Sinal de Adição
-O símbolo `+` corresponde à uma ou mais repetições do caractere anterior. Por exemplo, a expressão regular `c.+t` significa: a letra minúscula `c`, seguida por pelo menos um caractere, seguido do caractere minúsculo `t`.
+O símbolo `+` corresponde a uma ou mais repetições do caractere anterior. Por exemplo, a expressão regular `c.+t` significa: a letra minúscula `c`, seguida por pelo menos um caractere, seguido do caractere minúsculo `t`.
"c.+t" => The fat cat sat on the mat.
@@ -183,7 +184,7 @@ O símbolo `+` corresponde à uma ou mais repetições do caractere anterior. Po
### 2.3.3 O Ponto de Interrogação
-Em expressões regulares, o metacaractere `?` faz o caractere anterior ser opcional. Esse símbolo corresponde à zero ou uma ocorrência do caractere anterior. Por exemplo, a expressão regular `[T]?he` significa: A letra maiúsculo `T` opcional, seguida do caractere minúsculo `h`, seguido do caractere minúsculo `e`.
+Em expressões regulares, o metacaractere `?` faz o caractere anterior ser opcional. Esse símbolo corresponde a zero ou uma ocorrência do caractere anterior. Por exemplo, a expressão regular `[T]?he` significa: A letra maiúsculo `T` opcional, seguida do caractere minúsculo `h`, seguido do caractere minúsculo `e`.
"[T]he" => The car is parked in the garage.
@@ -199,7 +200,7 @@ Em expressões regulares, o metacaractere `?` faz o caractere anterior ser opcio
## 2.4 Chaves
-Em expressões regulares, chaves, que também são chamadas de quantificadores, são utilizadas para especificar o número de vezes que o caractere, ou um grupo de caracteres, pode se repetir. Por exemplo, a expressão regular `[0-9]{2,3}` significa: Encontre no mínimo 2 dígitos, mas não mais que 3 (caracteres no intervalo de 0 à 9).
+Em expressões regulares, chaves, que também são chamadas de quantificadores, são utilizadas para especificar o número de vezes que o caractere, ou um grupo de caracteres, pode se repetir. Por exemplo, a expressão regular `[0-9]{2,3}` significa: Encontre no mínimo 2 dígitos, mas não mais que 3 (caracteres no intervalo de 0 a 9).
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -223,7 +224,7 @@ Nós podemos retirar o segundo número. Por exemplo, a expressão regular `[0-9]
## 2.5 Grupo de Caracteres
-Grupo de caracteres é um grupo de sub-padrão que é escrito dentro de parênteses `(...)`. Como falamos antes, se colocaramos um quantificador depois de um caractere, ele irá repetir o caractere anterior. Mas se colocarmos um quantificador depois de um grupo de caracteres, ele irá repetir todo o conjunto. Por exemplo, a expressão regular `(ab)*` corresponde à zero ou mais repetições dos caracteres "ab". Nós também podemos usar o metacaractere de alternância `|` dentro de um grupo de caracteres. Por exemplo, a expressão regular `(c|g|p)ar` significa: caractere minúsculo `c`, `g` ou `p`, seguido do caractere `a`, seguido do caractere `r`.
+Grupo de caracteres é um grupo de sub-padrão que é escrito dentro de parênteses `(...)`. Como falamos antes, se colocaramos um quantificador depois de um caractere, ele irá repetir o caractere anterior. Mas se colocarmos um quantificador depois de um grupo de caracteres, ele irá repetir todo o conjunto. Por exemplo, a expressão regular `(ab)*` corresponde a zero ou mais repetições dos caracteres "ab". Nós também podemos usar o metacaractere de alternância `|` dentro de um grupo de caracteres. Por exemplo, a expressão regular `(c|g|p)ar` significa: caractere minúsculo `c`, `g` ou `p`, seguido do caractere `a`, seguido do caractere `r`.
"(c|g|p)ar" => The car is parked in the garage.
@@ -294,16 +295,16 @@ As expressões regulares fornecem abreviações para conjuntos de caracteres com
|Abreviação|Descrição|
|:----:|----|
|.|Qualquer caractere, exceto nova linha|
-|\w|Corresponde à caracteres alfanuméricos: `[a-zA-Z0-9_]`|
-|\W|Corresponde à caracteres não alfanuméricos: `[^\w]`|
-|\d|Corresponde à dígitos: `[0-9]`|
-|\D|Corresponde à não dígitos: `[^\d]`|
-|\s|Corresponde à caracteres de espaços em branco: `[\t\n\f\r\p{Z}]`|
-|\S|Corresponde à caracteres de espaços não em branco: `[^\s]`|
+|\w|Corresponde a caracteres alfanuméricos: `[a-zA-Z0-9_]`|
+|\W|Corresponde a caracteres não alfanuméricos: `[^\w]`|
+|\d|Corresponde a dígitos: `[0-9]`|
+|\D|Corresponde a não dígitos: `[^\d]`|
+|\s|Corresponde a caracteres de espaços em branco: `[\t\n\f\r\p{Z}]`|
+|\S|Corresponde a caracteres de espaços não em branco: `[^\s]`|
## 4. Olhar ao Redor
-Lookbehind (olhar atrás) e lookahead (olhar à frente), às vezes conhecidos como lookarounds (olhar ao redor), são tipos específicos de ***grupo de não captura*** (utilizado para encontrar um padrão, mas não incluí-lo na lista de ocorrêncoas). Lookarounds são usados quando temos a condição de que determinado padrão seja precedido ou seguido de outro padrão. Por exemplo, queremos capturar todos os números precedidos do caractere `$` da seguinte string de entrada: `$4.44 and $10.88`. Vamos usar a seguinte expressão regular `(?<=\$)[0-9\.]*` que significa: procure todos os números que contêm o caractere `.` e são precedidos pelo caractere `$`. À seguir estão os lookarounds que são utilizados em expressões regulares:
+Lookbehind (olhar atrás) e lookahead (olhar à frente), às vezes conhecidos como lookarounds (olhar ao redor), são tipos específicos de ***grupo de não captura*** (utilizado para encontrar um padrão, mas não incluí-lo na lista de ocorrêncoas). Lookarounds são usados quando temos a condição de que determinado padrão seja precedido ou seguido de outro padrão. Por exemplo, queremos capturar todos os números precedidos do caractere `$` da seguinte string de entrada: `$4.44 and $10.88`. Vamos usar a seguinte expressão regular `(?<=\$)[0-9\.]*` que significa: procure todos os números que contêm o caractere `.` e são precedidos pelo caractere `$`. A seguir estão os lookarounds que são utilizados em expressões regulares:
|Símbolo|Descrição|
|:----:|----|
@@ -362,7 +363,7 @@ Flags (sinalizadores) também são chamados de modificadores, porque eles modifi
|g|Busca global: Procura o padrão em toda a string de entrada.|
|m|Multilinhas: Os metacaracteres de âncora funcionam em cada linha.|
-### 5.1 Indiferente à Maiúsculas
+### 5.1 Indiferente a Maiúsculas
O modificador `i` é usado para tornar o padrão case-insensitive. Por exemplo, a expressão regular `/The/gi` significa: a letra maiúscula `T`, seguida do caractere minúsculo `h`, seguido do caractere `e`. E ao final da expressão regular, a flag `i` diz ao motor de expressões regulares para ignorar maiúsculas e minúsculas. Como você pode ver, nós também determinamos a flag `g` porque queremos procurar o padrão em toda a string de entrada.
From 780edf731801af3c1520c8d8fd0bf8b66041b2cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=B1=E8=A3=A4=E8=A1=A9?=
Date: Wed, 20 Mar 2019 21:59:01 +0800
Subject: [PATCH 045/162] fix CN
---
translations/README-cn.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index 3d256c44..447f0c68 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -189,7 +189,7 @@
`*`和表示匹配空格的符号`\s`连起来用, 如表达式`\s*cat\s*`匹配0或更多个空格开头和0或更多个空格结尾的cat字符串.
-"\s*cat\s*" => The fat cat sat on the concatenation.
+"\s*cat\s*" => The fat cat sat on the concatenation.
[在线练习](https://regex101.com/r/gGrwuz/1)
From 45a211d191d7ec107dfa974794e3106bef84e836 Mon Sep 17 00:00:00 2001
From: ivothgle
Date: Fri, 22 Mar 2019 17:32:07 +0800
Subject: [PATCH 046/162] Fix image link error
---
translations/README-cn.md | 2 +-
translations/README-es.md | 2 +-
translations/README-fr.md | 2 +-
translations/README-gr.md | 2 +-
translations/README-hu.md | 2 +-
translations/README-ja.md | 2 +-
translations/README-ko.md | 2 +-
translations/README-pl.md | 2 +-
translations/README-tr.md | 2 +-
translations/README-zh-simple.md | 2 +-
10 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index 447f0c68..fd0b9137 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -43,7 +43,7 @@
-
+
以上的正则表达式可以接受 `john_doe`, `jo-hn_doe`, `john12_as`.
diff --git a/translations/README-es.md b/translations/README-es.md
index 233e39ae..f059dc62 100644
--- a/translations/README-es.md
+++ b/translations/README-es.md
@@ -39,7 +39,7 @@ Imagina que estás escribiendo una aplicación y quieres agregar reglas para cua
-
+
La expresión regular anterior puede aceptar las cadenas `john_doe`, `jo-hn_doe` y `john12_as`. Sin embargo, la expresión no coincide con el nombre de usuario `Jo` porque es una cadena de caracteres que contiene letras mayúsculas y es demasiado corta.
diff --git a/translations/README-fr.md b/translations/README-fr.md
index 46f62391..66caacc8 100644
--- a/translations/README-fr.md
+++ b/translations/README-fr.md
@@ -42,7 +42,7 @@ le pseudonyme à contenir des lettres, des nombres, des underscores et des trait
de caractères dans le pseudonyme pour qu'il n'ait pas l'air moche. Nous utilisons l'expression régulière suivante pour valider un pseudonyme:
-
+
L'expression régulière ci-dessus peut accepter les chaines de caractères (string) `john_doe`, `jo-hn_doe` et `john12_as`. Ça ne fonctionne pas avec `Jo` car cette chaine de caractères (string) contient une lettre majuscule et elle est trop courte.
diff --git a/translations/README-gr.md b/translations/README-gr.md
index 00411898..42c133bc 100644
--- a/translations/README-gr.md
+++ b/translations/README-gr.md
@@ -47,7 +47,7 @@ string με βάση κάποιου μοτίβου αναζήτησης και
-
+
Η παραπάνω κανονική έκφραση θα δεχτεί ως σωστά τα ονόματα χρήστη `john_doe`, `jo-hn_doe` και
diff --git a/translations/README-hu.md b/translations/README-hu.md
index 48253c44..cc433678 100644
--- a/translations/README-hu.md
+++ b/translations/README-hu.md
@@ -47,7 +47,7 @@ használjuk:
-
+
A feljebbi reguláris kifejezés elfogadja a `john_doe`, `jo-hn_doe` és a
diff --git a/translations/README-ja.md b/translations/README-ja.md
index 5657daba..4675635d 100644
--- a/translations/README-ja.md
+++ b/translations/README-ja.md
@@ -45,7 +45,7 @@
-
+
この正規表現によって `john_doe, jo-hn_doe, john12_as` などは許容されることになります。
diff --git a/translations/README-ko.md b/translations/README-ko.md
index 19527422..d75a5c5f 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -39,7 +39,7 @@
-
+
위의 정규 표현식은 `john_doe`, `jo-hn_doe`, 그리고 `john12_as` 문자열을 받아들일 수 있다. `Jo`는 대문자를 포함하고 있고 길이가 너무 짧기 때문에 위의 정규표현식과 매칭되지 않는다.
diff --git a/translations/README-pl.md b/translations/README-pl.md
index 5a0ebda1..f9104d55 100644
--- a/translations/README-pl.md
+++ b/translations/README-pl.md
@@ -48,7 +48,7 @@ regularne, aby sprawdzić poprawność nazwy:
-
+
Powyższe wyrażenie akceptuje łańcuchy `john_doe`, `jo-hn_doe`
diff --git a/translations/README-tr.md b/translations/README-tr.md
index 47472e6e..cc218776 100644
--- a/translations/README-tr.md
+++ b/translations/README-tr.md
@@ -49,7 +49,7 @@ kullanıyoruz:
-
+
Yukardaki düzenli ifade `john_doe`, `jo-hn_doe` ve `john12_as` gibi girişleri kabul edebilir.
diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md
index 60652cef..4f60eccc 100644
--- a/translations/README-zh-simple.md
+++ b/translations/README-zh-simple.md
@@ -42,7 +42,7 @@
-
+
以上的正则表达式可以接受 `john_doe`, `jo-hn_doe`, `john12_as`.
From 7c06620b6369439570c7fae88ef6156773f6aa0d Mon Sep 17 00:00:00 2001
From: ParadoxZW <964730078@qq.com>
Date: Sun, 7 Apr 2019 15:36:13 +0800
Subject: [PATCH 047/162] fix some improper statement in cn-translation
---
translations/README-cn.md | 60 +++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index fd0b9137..0513841f 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -59,7 +59,7 @@
* [2.2.1 否定字符集](#221-否定字符集)
* [2.3 重复次数](#23-重复次数)
* [2.3.1 * 号](#231--号)
- * [2.3.2 号](#232--号)
+ * [2.3.2 + 号](#232--号)
* [2.3.3 ? 号](#233--号)
* [2.4 {} 号](#24--号)
* [2.5 (...) 特征标群](#25--特征标群)
@@ -69,11 +69,11 @@
* [2.8.1 ^ 号](#281--号)
* [2.8.2 $ 号](#282--号)
* [3. 简写字符集](#3-简写字符集)
-* [4. 前后关联约束(前后预查)](#4-前后关联约束前后预查)
- * [4.1 ?=... 前置约束(存在)](#41--前置约束存在)
- * [4.2 ?!... 前置约束-排除](#42--前置约束-排除)
- * [4.3 ?<= ... 后置约束-存在](#43---后置约束-存在)
- * [4.4 ?<!... 后置约束-排除](#44--后置约束-排除)
+* [4. 零宽度断言(前后预查)](#4-零宽度断言前后预查)
+ * [4.1 ?=... 正先行断言](#41--正先行断言)
+ * [4.2 ?!... 负先行断言](#42--负先行断言)
+ * [4.3 ?<= ... 正后发断言](#43---正后发断言)
+ * [4.4 ?<!... 负后发断言](#44--负后发断言)
* [5. 标志](#5-标志)
* [5.1 忽略大小写 (Case Insensitive)](#51-忽略大小写-case-insensitive)
* [5.2 全局搜索 (Global search)](#52-全局搜索-global-search)
@@ -349,32 +349,32 @@
|\v|匹配一个垂直制表符|
|\p|匹配 CR/LF (等同于 `\r\n`),用来匹配 DOS 行终止符|
-## 4. 前后关联约束(前后预查)
+## 4. 零宽度断言(前后预查)
-前置约束和后置约束都属于**非捕获簇**(用于匹配不在匹配列表中的格式).
-前置约束用于判断所匹配的格式是否在另一个确定的格式之后.
+先行断言和后发断言都属于**非捕获簇**(不捕获文本 ,也不针对组合计进行计数).
+先行断言用于判断所匹配的格式是否在另一个确定的格式之前, 匹配结果不包含该确定格式(仅作为约束).
-例如, 我们想要获得所有跟在 `$` 符号后的数字, 我们可以使用正向向后约束 `(?<=\$)[0-9\.]*`.
+例如, 我们想要获得所有跟在 `$` 符号后的数字, 我们可以使用正后发断言 `(?<=\$)[0-9\.]*`.
这个表达式匹配 `$` 开头, 之后跟着 `0,1,2,3,4,5,6,7,8,9,.` 这些字符可以出现大于等于 0 次.
-前后关联约束如下:
+零宽度断言如下:
|符号|描述|
|:----:|----|
-|?=|前置约束-存在|
-|?!|前置约束-排除|
-|?<=|后置约束-存在|
-|?
"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
@@ -382,10 +382,10 @@
[在线练习](https://regex101.com/r/IDDARt/1)
-### 4.2 `?!...` 前置约束-排除
+### 4.2 `?!...` 负先行断言
-前置约束-排除 `?!` 用于筛选所有匹配结果, 筛选条件为 其后不跟随着定义的格式
-`前置约束-排除` 定义和 `前置约束(存在)` 一样, 区别就是 `=` 替换成 `!` 也就是 `(?!...)`.
+负先行断言 `?!` 用于筛选所有匹配结果, 筛选条件为 其后不跟随着断言中定义的格式.
+`正先行断言` 定义和 `负先行断言` 一样, 区别就是 `=` 替换成 `!` 也就是 `(?!...)`.
表达式 `(T|t)he(?!\sfat)` 匹配 `The` 和 `the`, 且其后不跟着 `(空格)fat`.
@@ -395,9 +395,9 @@
[在线练习](https://regex101.com/r/V32Npg/1)
-### 4.3 `?<= ...` 后置约束-存在
+### 4.3 `?<= ...` 正后发断言
-后置约束-存在 记作`(?<=...)` 用于筛选所有匹配结果, 筛选条件为 其前跟随着定义的格式.
+正后发断言 记作`(?<=...)` 用于筛选所有匹配结果, 筛选条件为 其前跟随着断言中定义的格式.
例如, 表达式 `(?<=(T|t)he\s)(fat|mat)` 匹配 `fat` 和 `mat`, 且其前跟着 `The` 或 `the`.
@@ -406,9 +406,9 @@
[在线练习](https://regex101.com/r/avH165/1)
-### 4.4 `?
@@ -419,7 +419,7 @@
## 5. 标志
-标志也叫修饰语, 因为它可以用来修改表达式的搜索结果.
+标志也叫模式修正符, 因为它可以用来修改表达式的搜索结果.
这些标志可以任意的组合使用, 它也是整个正则表达式的一部分.
|标志|描述|
@@ -447,7 +447,7 @@
### 5.2 全局搜索 (Global search)
-修饰符 `g` 常用语执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部).
+修饰符 `g` 常用于执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部).
例如, 表达式 `/.(at)/g` 表示搜索 任意字符(除了换行) + `at`, 并返回全部结果.
From d2ddc4d5ba8bc293d08225fcdad338bc19e2d96a Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Mon, 27 May 2019 11:10:18 +0400
Subject: [PATCH 048/162] Add funding yml file
---
.github/FUNDING.yml | 1 +
1 file changed, 1 insertion(+)
create mode 100644 .github/FUNDING.yml
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..b994b54a
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+open_collective: learn-regex
From 897be2d07c1c1e2970813b14a6e298198345d135 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Mon, 27 May 2019 11:36:31 +0400
Subject: [PATCH 049/162] Update FUNDING.yml
---
.github/FUNDING.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index b994b54a..42e653b6 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1 +1,2 @@
open_collective: learn-regex
+patreon: ziishaned
From 9392a3df39e4351abd55112eee5045cb82a7bed3 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Wed, 3 Jul 2019 10:12:18 +0400
Subject: [PATCH 050/162] Add github badge
---
README.md | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index d0712bbe..15f1c262 100644
--- a/README.md
+++ b/README.md
@@ -6,10 +6,13 @@
From 7c6353325b0e431d87d2df4823e0f0382ec54227 Mon Sep 17 00:00:00 2001
From: Zeeshan Ahmad
Date: Wed, 3 Jul 2019 10:14:25 +0400
Subject: [PATCH 051/162] Add twitter badge inside readme
---
README.md | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 15f1c262..60e5dff8 100644
--- a/README.md
+++ b/README.md
@@ -5,11 +5,8 @@
-
-
-
-
+
From c5738a7c63db0c3de43c28bc9a7707e3e1f7e3d9 Mon Sep 17 00:00:00 2001
From: Veikko Lehmuskorpi
Date: Thu, 4 Jul 2019 11:05:02 +0300
Subject: [PATCH 052/162] Fix 2.5.1. header anchor link
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 60e5dff8..b83683fc 100644
--- a/README.md
+++ b/README.md
@@ -310,7 +310,7 @@ within parenthesis `(...)`. For example, the regular expression `(?:c|g|p)ar` is
Non-capturing groups can come in handy when used in find-and-replace functionality or
when mixed with capturing groups to keep the overview when producing any other kind of output.
-See also [4. Lookaround](# 4. Lookaround).
+See also [4. Lookaround](#4-lookaround).
## 2.6 Alternation
From 982462b60165b370bf864bc416455276dc2668b2 Mon Sep 17 00:00:00 2001
From: mrtheyann
Date: Sun, 7 Jul 2019 21:21:11 +0500
Subject: [PATCH 053/162] Translate to Russian (#142)
---
img/regexp-ru.png | Bin 0 -> 17905 bytes
translations/README-ru.md | 565 ++++++++++++++++++++++++++++++++++++++
2 files changed, 565 insertions(+)
create mode 100644 img/regexp-ru.png
create mode 100644 translations/README-ru.md
diff --git a/img/regexp-ru.png b/img/regexp-ru.png
new file mode 100644
index 0000000000000000000000000000000000000000..a28870ccdda15091fc187f8a181d1f0a9a8e828e
GIT binary patch
literal 17905
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
literal 0
HcmV?d00001
diff --git a/translations/README-ru.md b/translations/README-ru.md
new file mode 100644
index 00000000..78288300
--- /dev/null
+++ b/translations/README-ru.md
@@ -0,0 +1,565 @@
+
+
+
+
+
+
+
+
+
+## Translations:
+
+* [English](README.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
+* [Русский](translations/README-ru.md)
+
+## Что такое Регулярное выражение?
+
+> Регулярное выражение - это группа букв или символов, которая используется для поиска определенного шаблона в тексте.
+
+Регулярное выражение - это шаблон, сопоставляемый с искомой строкой слева направо.
+Термин «Регулярное выражение» сложно произносить каждый раз, поэтому, обычно, вы будете сталкиваться с сокращениями "регэкспы" или "регулярки".
+Регулярные выражения используются для замен текста внутри строк, валидации форм,
+извлечений подстрок по определенным шаблонам и множества других вещей.
+
+Представьте, что вы пишете приложение и хотите установить правила, по которым пользователь выбирает свой юзернейм. Мы хотим, чтобы имя пользователя содержало буквы, цифры, подчеркивания и дефисы. Мы также хотим ограничить количество символов в имени пользователя, чтобы оно не выглядело безобразно.
+Для этого, используем следующее регулярное выражение:
+
+
+
+
+
+
+
+Регулярное выражения выше может принимать строки `john_doe`,` jo-hn_doe` и `john12_as`.
+Оно не валидирует `Jo`, поскольку эта строка содержит заглавные буквы, а также она слишком короткая.
+
+## Содержание
+
+- [Совпадения](#1-совпадения)
+- [Метасимволы](#2-метасимволы)
+ - [Точка](#21-точка)
+ - [Набор символов](#22-набор-символов)
+ - [Отрицание набора символов](#221-отрицание-набора-символов)
+ - [Повторения](#23-повторения)
+ - [Звёздочка](#231-звёздочка)
+ - [Плюс](#232-плюс)
+ - [Знак вопроса](#233-знак-вопроса)
+ - [Фигурные скобки](#24-фигурные-скобки)
+ - [Скобочные группы](#25-скобочные-группы)
+ - [Альтернация](#26-альтернация)
+ - [Экранирование](#27-экранирование)
+ - [Якоря](#28-якоря)
+ - [Каретка](#281-каретка)
+ - [Доллар](#282-доллар)
+- [Наборы сокращений и диапазоны](#3-наборы-сокращений-и-диапазоны)
+- [Опережающие и ретроспективные проверки](#4-опережающие-и-ретроспективные-проверки)
+ - [Положительное опережающее условие](#41-положительное-опережающее-условие)
+ - [Отрицательное опережающее условие](#42-отрицательное-опережающее-условие)
+ - [Положительное ретроспективное условие](#43-положительное-ретроспективное-условие)
+ - [Отрицательное ретроспективное условие](#44-отрицательное-ретроспективное-условие)
+- [Флаги](#5-флаги)
+ - [Поиск без учета регистра](#51-поиск-без-учета-регистра)
+ - [Глобальный поиск](#52-глобальный-поиск)
+ - [Мультистроковый поиск](#53-мультистроковый-поиск)
+- [Жадные vs ленивые квантификаторы](#6-жадные-vs-ленивые-квантификаторы)
+
+## 1. Совпадения.
+
+В сущности, регулярное выражение - это просто набор символов, который мы используем для поиска в тексте.
+Например, регулярное выражение `the` состоит из буквы` t`, за которой следует буква `h`, за которой следует буква `e`.
+
+
+"the" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/dmRygT/1)
+
+Регулярное выражение `123` соответствует строке` 123`. Регулярное выражение сопоставляется с входной строкой, сравнивая
+каждый символ в регулярном выражении с каждым символом во входной строке по одному символу за другим. Регулярные выражения
+обычно чувствительны к регистру, поэтому регулярное выражение `The` не будет соответствовать строке` the`.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/1paXsy/1)
+
+## 2. Метасимволы
+
+Метасимволы это блоки, из которых строятся регулярные выражения. Метасимволы не означают что-то сами по себе,
+вместо этого они интерпретируются для распознавания специальных групп символов. Некоторые метасимволы имеют
+особые обозначения и пишутся в квадратных скобках. Существуют следующие метасимволы:
+
+|Метасимволы|Описание|
+|:----:|----|
+|.|Точка соответствует любому отдельному символу, кроме разрыва строки.|
+|[ ]|Класс символов. Находить любые символы заключенные в квадратных скобках.|
+|[^ ]|Отрицание класа символов. Находить любые символы не заключенные в квадратных скобках.|
+|*|Находить 0 или более повторений предыдущего символа.|
+|+|Находить 1 или более повторений предыдущего символа.|
+|?|Сделать предыдущий символ необязательным.|
+|{n,m}|Скобки. Находить по крайней мере "n" но не более чем "m" повторений предыдущего символа.|
+|(xyz)|Группа символов. Находить только символы xyz в указанном порядке.|
+|||Чередование. Находить либо буквы до, либо буквы после символа.|
+|\|Экранирование. Позволяет находить зарезервированные символы: [ ] ( ) { } . * + ? ^ $ \ ||
+|^|Обозначает начало пользовательского ввода.|
+|$|Обозначает конец пользовательского ввода.|
+
+## 2.1 Точка
+
+Точка `.` это простейший пример метасимвола. Метасимвол `.`
+находит любой отдельный символ. Точка не будет находить символы перехода или перевода строки.
+For example, the regular expression `.ar` means: any character, followed by the
+letter `a`, followed by the letter `r`. Например, регулярное выражение '.ar' обозначает: любой символ, за которым следуют буквы ` a` и `r`.
+
+
+".ar" => The car parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/xc9GkU/1)
+
+## 2.2 Набор символов.
+
+Набор символов также называется классом символов. Квадратные скобки используются
+для определения набора символов. Дефис используется для указания диапазона символов.
+Порядок следования символов, заданный в квадратных скобках, не важен. Например,
+регулярное выражение `[Tt]he` обозначает заглавную 'T' или строчную 't', за которой следуют буквы 'h' и 'e'.
+
+
+"[Tt]he" => The car parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/2ITLQ4/1)
+
+Точка внутри набора символов, однако, обозначает непосредственно точку, как символ.
+Регулярное выражение `ar[.]` обозначает строчную 'a', за которой следует 'r', за которой следует '.' (символ точки).
+
+
+"ar[.]" => A garage is a good place to park a car.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/wL3xtE/1)
+
+### 2.2.1 Отрицание набора символов
+
+Знак вставки '^' обозначает начало строки, однако, когда вы вписываете его после открытия квадратных скобок, он отрицает набор символов.
+Например, регулярное выражение `[^c]ar` обозначает любой символ, кроме 'c', за которым следуют буквы 'a' и 'r'.
+
+
+"[^c]ar" => The car parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/nNNlq3/1)
+
+## 2.3 Повторения
+
+Символы `+`, `*` or `?` используются для обозначения того, как сколько раз появляется какой-либо подшаблон.
+Данные метасимволы могут вести себя по-разному, в зависимости от ситуации.
+
+### 2.3.1 Звёздочка
+
+Символ `*` обозначает ноль или более повторений предыдущего совпадения.
+Регулярное выражение `a *` означает ноль или более повторений предыдущего
+строчного символа `a`. Если же символ появляется после набора или класса символов,
+он находит повторения всего набора символов. Например, регулярное выражение `[a-z] *`
+означает любое количество строчных букв в строке.
+
+
+"[a-z]*" => The car parked in the garage #21.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/7m8me5/1)
+
+Символы можно комбинировать, так, например, символ `*` может использоваться с метасимволом `.`
+для поиска одной строки с произвольным содержанием `. * `. Символ `*` может использоваться
+с символом пробела `\ s`, чтобы находить строки с символами пробела. Например, выражение
+`\ s * cat \ s *` означает: ноль или более пробелов, за которыми следует слово `cat`,
+за которым следует ноль или более символов пробела.
+
+
+"\s*cat\s*" => The fat cat sat on the concatenation.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/gGrwuz/1)
+
+### 2.3.2 Плюс
+
+Символ `+` соответствует одному или более повторению предыдущего символа. Например,
+регулярное выражение `c.+t` означает строчную `c`, за которой следует по крайней мере один символ,
+следом за которым идёт символ `t`. Стоит уточнить, что в данном шаблоне, `t` является последним` t` в предложении.
+
+
+"c.+t" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/Dzf9Aa/1)
+
+### 2.3.3 Знак вопроса
+
+В регулярном выражении метасимвол `?` делает предыдущий символ необязательным.
+Этот символ соответствует нулю или одному экземпляру предыдущего символа.
+Например, регулярное выражение `[T]?he` означает необязательную заглавную букву `T`, за которой следуют символы 'h' и 'e'.
+
+
+"[T]he" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/cIg9zm/1)
+
+
+"[T]?he" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/kPpO2x/1)
+
+## 2.4 Фигурные скобки
+
+В фигурных скобках, которые также называются квантификаторами, указывается,
+сколько раз символ или группа символов могут повторяться. Например, регулярное выражение
+`[0-9] {2,3}` означает совпадение не менее 2 но не более 3 цифр в диапазоне от 0 до 9.
+
+
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/juM86s/1)
+
+Уберём второй номер (цифру 3), тогда, регулярное выражение `[0-9] {2,}` будет означать
+совпадение 2 или более цифр. Если мы также удалим запятую, то регулярное выражение
+`[0-9] {3}` будет означать совпадение точно с 3 цифрами.
+
+
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/Gdy4w5/1)
+
+
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/Sivu30/1)
+
+## 2.5 Скобочные группы
+
+Скобочные группы это группы подшаблонов, которые написаны в круглых скобках
+`(...)`. Как мы уже говорили ранее в регулярном выражении, если мы поставим квантификатор
+после символа, он будет повторять предыдущий символ. Но если мы поставим квантификатор после
+скобочной группы, он будет искать всю группу. Например, регулярное выражение `(ab) *` соответствует
+нулю или более повторений символа "ab". Мы также можем использовать метасимвол чередования `|`
+внутри скобочной группы. Например, регулярное выражение `(c|g|p)ar` означает поиск одной из строчных букв `c`,
+`g` или `p`, за которыми следуют буквы 'a' и 'r'.
+
+
+"(c|g|p)ar" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/tUxrBG/1)
+
+Обратите внимание, что скобочные группы не только находят, но и захватывают символы для использования на родительском языке.
+Родительским языком может быть python, javascript или практически любой язык, который реализует использование регулярных выражений как параметров функций.
+
+### 2.5.1 Не запоминающие скобочные группы
+
+Бывает так, что группу определить нужно, а вот запоминать их содержимое в массиве не требуется.
+Подобный трюк осуществляется при помощи зарезервированной комбинации `?:`
+в круглых скобках `(...)`. Например, регулярное выражение `(?:c|g|p)ar` будет находить такие же шаблоны как и
+`(c|g|p)ar`, однако скобочная группа при этом создана не будет.
+
+
+"(?:c|g|p)ar" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/Rm7Me8/1)
+
+Не запоминающиеся группы пригодиться, когда они используются в функциях поиска и замены
+или в сочетании со скобочными группами, например, для предпросмотра при создании скобочной группы или другого вида выходных данных,
+смотрите также [4. Опережающие и ретроспективные проверки](#4-опережающие-и-ретроспективные-проверки).
+
+## 2.6 Альтернация
+
+В регулярных выражениях, вертикальная черта `|` используется для определения альтернации (чередования).
+Альтернация по своей сути похожа на оператор ИЛИ между логическими выражениями. Может создаться впечатление, что
+чередование это то же самое, что и определение набора символов. Однако, большая разница между ними в том, что
+набор символов работает на уровне конкретных символов, в то время как альтернация работает на уровне выражений.
+Например, регулярное выражение `(T|t)he|car` объединяет два шаблона (заглавная `T` ИЛИ строчная `t`, с продолжением из 'h' и 'e') и шаблон
+(строчная `c`, затем строчная `a`, за которой следует строчная `r`). Таким образом, в поиске будет участвовать любой из данных шаблонов,
+по аналогии с логической операцией ИЛИ в программировании и алгебре выражений.
+
+
+"(T|t)he|car" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/fBXyX0/1)
+
+## 2.7 Экранирование спецсимволов
+
+Обратный слэш `\` используется в регулярных выражениях для экранирования следующего символа.
+Это позволяет формировать шаблоны с поиском зарезервированных символамов, таких как `{ } [ ] / \ + * . $ ^ | ?`.
+Для использования спецсимвола в шаблоне необходимо указать символ '\' перед ним.
+
+Как упомянуто выше, символ `.` является зарезервированным и соответствует любому значению, кроме символа новой строки.
+Бывают ситуации, когда необходимо найти точку в предложении, для таких случаев применимо экранирование. Рассмотрим выражение
+`(f|c|m)at\.?`, что соответствует следующему шаблону: стройчный символ `f`, `c` или `m`, за которым следует строчные буквы `a` и `t`, с опциональной `.` точкой в конце.
+
+
+"(f|c|m)at\.?" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/DOc5Nu/1)
+
+## 2.8 Якоря
+
+Понятие якорей в регулярных выражениях используется для обозначения проверок, является ли
+соответствующий символ начальным или конечным символом входной строки. Якоря бывают двух типов:
+Первый тип - Каретка `^`, проверяет, является ли соответствующий символ начальным символом в тексте.
+Второй тип - Доллар `$`, проверяет, является ли соответствующий символ последним символом входной строки.
+
+### 2.8.1 Каретка
+
+Символ каретки `^` используется для проверки, является ли соответствующий символ первым символом входной строки.
+Если мы применяем следующее регулярное выражение `^a` (если a является начальным символом) для строки `abc`,
+совпадение будет соответствовать букве `a`. Если же мы используем регулярное выражение `^b` на той же строке,
+мы не получим совпадения, поскольку во входящей строке `abc` "b" не является первым символом. Рассмотрим другое
+регулярное выражение: `^(T|t)he`, обозначающее заглавную `T` или строчную `t` как первый символ, за которым следуют
+символы букв 'h' и 'e'. Cоответственно:
+
+
+"(T|t)he" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/5ljjgB/1)
+
+
+"^(T|t)he" => The car is parked in the garage.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/jXrKne/1)
+
+### 2.8.2 Доллар
+
+Символ доллара `$` используется для проверки, является ли соответствующий символ
+последним символом входной строки. Например, регулярное выражение `(at\.)$` последовательность из
+строчной `a`, строчной `t`, и точки `.`, ключевой момент в том, что благодаря доллару этот шаблон будет
+находить совпадения только в том случае, если будет наблюдаться в конце строки. Например:
+
+
+"(at\.)" => The fat cat. sat. on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/y4Au4D/1)
+
+
+"(at\.)$" => The fat cat. sat. on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/t0AkOd/1)
+
+## 3. Наборы сокращений и диапазоны
+
+Регулярные выражения предоставляют сокращения для часто используемых наборов символов,
+которые предлагают удобные сокращения для часто используемых регулярных выражений.
+Наборы сокращенных символов следующие:
+
+|Сокращение|Описание|
+|:----:|----|
+|.|Любой символ кроме символа новой строки|
+|\w|Поиск буквенно-цифрового диапазона символов: `[a-zA-Z0-9_]`|
+|\W|Поиск не буквенно-цифрового диапазона символов: `[^\w]`|
+|\d|Поиск цифр: `[0-9]`|
+|\D|Поиск всего, что не является цифрой: `[^\d]`|
+|\s|Поиск пробелов и символов начала строки: `[\t\n\f\r\p{Z}]`|
+|\S|Поиск всего кроме пробелов и символов начала строки: `[^\s]`|
+
+## 4. Опережающие и ретроспективные проверки
+
+Опережающие и ретроспективные проверки (в английской литературе lookbehind, lookahead) это особый вид
+***не запоминающих скобочных групп*** (находящих совпадения, но не добавляющих в массив).
+Данные проверки используются, мы знаем, что шаблон предшествует или сопровождается другим шаблоном.
+Например, мы хотим получить получить цену в долларах `$`, из следующей входной строки
+`$4.44 and $10.88`. Для этого используем следующее регулярное выражение `(?<=\$)[0-9\.]*`, означающее
+получение всех дробных (с точкой `.`) цифр, которым предшествует знак доллара `$`. Существуют
+следующие виды проверок:
+
+|Символ|Описание|
+|:----:|----|
+|?=|Положительное опережающее условие|
+|?!|Отрицательное опережающее условие|
+|?<=|Положительное ретроспективное условие|
+|?
+"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/IDDARt/1)
+
+### 4.2 Отрицательное опережающее условие
+
+Отрицательное опережающее условие работает по обратному принципу: используется, когда нам нужно получить
+все совпадения из входной строки, за которыми НЕ следует определенный шаблон. Отрицательное опережающее условие
+определяется таким же образом, как и позитивное, с той лишь разницей, что вместо равенства `=` мы ставим
+восклицательный знак `!` (отрицание) например: `(?!...)`. Рассмотрим выражение `(T|t)he(?!\sfat)`, в котором мы
+находим все `The` или `the` слова из входной строки, за которыми не следует слово `fat`.
+
+
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/V32Npg/1)
+
+### 4.3 Положительное ретроспективное условие
+
+Положительное ретроспективное условие используется чтобы найти все совпадения, которым предшествует
+определенный шаблон. Условие определяется как `(?<=...)`. Например, выражение `(?<=(T|t)he\s)(fat|mat)` означает,
+найти все слова `fat` или `mat` из входной строки, которым предшествует слово `The` or `the`.
+
+
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/avH165/1)
+
+### 4.4 Отрицательное ретроспективное условие
+
+Отрицательное ретроспективное условие используется чтобы найти все совпадения, которым НЕ предшествует
+определенный шаблон. Условие определяется как `(?
+"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/8Efx5G/1)
+
+## 5. Флаги
+
+Флаги, также называемые модификаторами, изменяют вывод регулярного выражения.
+Эти флаги могут быть использованы в любом порядке или комбинации, и являются
+неотъемлемой частью регулярных выражений.
+
+|Флаг|Описание|
+|:----:|----|
+|i|Поиск без учета регистра|
+|g|Глобальный поиск: поиск шаблона во всем входном тексте|
+|m|Мультистроковый поиск: Якоря применяются к каждой строке.|
+
+### 5.1 Поиск без учета регистра
+
+Модификатор `i` используется для поиска без учета регистра. Например, регулярное выражение
+`/The/gi` означает заглавную `T` следом строчные `h` и `e`. В конце регулярного выражения флаг `i`,
+указывающий движку регулярных выражений игнорировать регистр. Помимо `i`, для поиска шаблона во
+всем входном тексте, использован флаг `g`.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/dpQyf9/1)
+
+
+"/The/gi" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/ahfiuh/1)
+
+### 5.2 Глобальный поиск
+
+Модификатор `g` используется для выполнения глобального сопоставления (найти все совпадения, а не останавливаться после первого).
+Например, регулярное выражение `/.(at)/g` означает любой символ кроме символа новой строки, следом строчная `a`, далее строчная `t`.
+Из-за использования флага `g` в конце регулярного выражения, теперь оно найдет все совпадения во входной строке, а не остановится на первом
+(что является поведением по умолчанию).
+
+
+"/.(at)/" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/jnk6gM/1)
+
+
+"/.(at)/g" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/dO1nef/1)
+
+### 5.3 Мультистроковый поиск
+
+Модификатор `m` используется для многострочного поиска. Как мы обсуждали ранее,
+якоря `(^, $)` используются для проверки, является ли шаблон началом или концом входной строки.
+Но если мы хотим, чтобы якоря работали в каждой строке, мы используем флаг `m`. Например,
+регулярное выражение `/at(.)?$/gm` означает строчную `a`, следом строчная `t` и любой
+символ кроме начала новой строки, идущий опционально (не обязательно). Из-за флага `m` механизм
+регулярных выражений будет искать данный шаблон в конце каждой строки в тексте.
+
+
+"/.at(.)?$/" => The fat
+ cat sat
+ on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/hoGMkP/1)
+
+
+"/.at(.)?$/gm" => The fat
+ cat sat
+ on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/E88WE2/1)
+
+## 6. Жадные vs ленивые квантификаторы
+По умолчанию регулярное выражение выполняет жадное сопоставление, то есть оно будет
+искать совпадения как можно дольше. Мы можем использовать `?` для ленивого поиска, который
+будет стремиться быть как можно более коротким по времени.
+
+
+"/(.*at)/" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/AyAdgJ/1)
+
+
+"/(.*?at)/" => The fat cat sat on the mat.
+
+
+[Запустить регулярное выражение](https://regex101.com/r/AyAdgJ/2)
+
+
+## Содействие
+
+* Вы можете открыть пулл реквест с улучшением
+* Обсуждать идеи в issues
+* Распространять ссылку на репозиторий
+* Получить обратную связь через [](https://twitter.com/ziishaned)
+
+## Лицензия
+
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
\ No newline at end of file
From 65938c0533eb9b2b84cc8c62d2279e7004918084 Mon Sep 17 00:00:00 2001
From: mrtheyann
Date: Sun, 7 Jul 2019 21:25:17 +0500
Subject: [PATCH 054/162] Update translations list
---
README.md | 1 +
translations/README-cn.md | 1 +
translations/README-es.md | 1 +
translations/README-fr.md | 1 +
translations/README-gr.md | 1 +
translations/README-hu.md | 1 +
translations/README-ja.md | 1 +
translations/README-ko.md | 1 +
translations/README-pl.md | 1 +
translations/README-pt_BR.md | 1 +
translations/README-tr.md | 1 +
translations/README-zh-simple.md | 1 +
12 files changed, 12 insertions(+)
diff --git a/README.md b/README.md
index b83683fc..94b44d06 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,7 @@
* [Greek](translations/README-gr.md)
* [Magyar](translations/README-hu.md)
* [Polish](translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## What is Regular Expression?
diff --git a/translations/README-cn.md b/translations/README-cn.md
index 0513841f..ac375044 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## 什么是正则表达式?
diff --git a/translations/README-es.md b/translations/README-es.md
index f059dc62..d12f2343 100644
--- a/translations/README-es.md
+++ b/translations/README-es.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## Qué es una expresión regular?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
diff --git a/translations/README-fr.md b/translations/README-fr.md
index 66caacc8..ab245d9d 100644
--- a/translations/README-fr.md
+++ b/translations/README-fr.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## Qu'est-ce qu'une expression régulière?
diff --git a/translations/README-gr.md b/translations/README-gr.md
index 42c133bc..a59eec5c 100644
--- a/translations/README-gr.md
+++ b/translations/README-gr.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## Τι είναι μια Κανονική Έκφραση (Regular Expression);
diff --git a/translations/README-hu.md b/translations/README-hu.md
index cc433678..ffed4dbb 100644
--- a/translations/README-hu.md
+++ b/translations/README-hu.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## Mi az a reguláris kifejezés?
diff --git a/translations/README-ja.md b/translations/README-ja.md
index 4675635d..e59a73b7 100644
--- a/translations/README-ja.md
+++ b/translations/README-ja.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## 正規表現とは
diff --git a/translations/README-ko.md b/translations/README-ko.md
index d75a5c5f..80e3a049 100644
--- a/translations/README-ko.md
+++ b/translations/README-ko.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## 정규표현식이란 무엇인가?
diff --git a/translations/README-pl.md b/translations/README-pl.md
index f9104d55..a0cc5a70 100644
--- a/translations/README-pl.md
+++ b/translations/README-pl.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## Co to jest wyrażenie regularne?
diff --git a/translations/README-pt_BR.md b/translations/README-pt_BR.md
index a8e2f61d..1aaf7a4a 100644
--- a/translations/README-pt_BR.md
+++ b/translations/README-pt_BR.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## O que é uma Expressão Regular?
diff --git a/translations/README-tr.md b/translations/README-tr.md
index cc218776..094456d0 100644
--- a/translations/README-tr.md
+++ b/translations/README-tr.md
@@ -28,6 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## Düzenli İfade Nedir?
diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md
index 4f60eccc..ee33936d 100644
--- a/translations/README-zh-simple.md
+++ b/translations/README-zh-simple.md
@@ -27,6 +27,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
+* [Русский](translations/README-ru.md)
## 什么是正则表达式?
From db9cf88153ad1474853e7bf8fbfd52718166fb6a Mon Sep 17 00:00:00 2001
From: mrtheyann
Date: Sun, 7 Jul 2019 21:33:00 +0500
Subject: [PATCH 055/162] Fix regexp-ru.png display
---
translations/README-ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/README-ru.md b/translations/README-ru.md
index 78288300..eea55aab 100644
--- a/translations/README-ru.md
+++ b/translations/README-ru.md
@@ -44,7 +44,7 @@
-
+
Регулярное выражения выше может принимать строки `john_doe`,` jo-hn_doe` и `john12_as`.
From 0e046dd0582d3eb1c56efefc4c88d4eecd22676e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=88=91=E6=98=AF=E6=B4=97=E8=A1=A3=E6=9C=BA?=
Date: Mon, 8 Jul 2019 15:51:38 +0800
Subject: [PATCH 056/162] Fix content's order
---
translations/README-cn.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index 0513841f..8883baa8 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -236,15 +236,15 @@
我们可以省略第二个参数.
例如, `[0-9]{2,}` 匹配至少两位 0~9 的数字.
-如果逗号也省略掉则表示重复固定的次数.
-例如, `[0-9]{3}` 匹配3位数字
-
"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
[在线练习](https://regex101.com/r/Gdy4w5/1)
+如果逗号也省略掉则表示重复固定的次数.
+例如, `[0-9]{3}` 匹配3位数字
+
"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
From cfe3850d8ed6afbb825d84e44254189e0dfef994 Mon Sep 17 00:00:00 2001
From: Andrey Ponomarenko
Date: Wed, 10 Jul 2019 13:49:08 +0100
Subject: [PATCH 057/162] Removed wrong english sentence
---
translations/README-ru.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/translations/README-ru.md b/translations/README-ru.md
index eea55aab..df194261 100644
--- a/translations/README-ru.md
+++ b/translations/README-ru.md
@@ -126,8 +126,7 @@
Точка `.` это простейший пример метасимвола. Метасимвол `.`
находит любой отдельный символ. Точка не будет находить символы перехода или перевода строки.
-For example, the regular expression `.ar` means: any character, followed by the
-letter `a`, followed by the letter `r`. Например, регулярное выражение '.ar' обозначает: любой символ, за которым следуют буквы ` a` и `r`.
+Например, регулярное выражение '.ar' обозначает: любой символ, за которым следуют буквы ` a` и `r`.
".ar" => The car parked in the garage.
@@ -562,4 +561,4 @@ letter `a`, followed by the letter `r`. Например, регулярное
## Лицензия
-MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
\ No newline at end of file
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
From 57a7df38aa54a8741c32aa5d60c42687b35b4a93 Mon Sep 17 00:00:00 2001
From: pravdakotchestno
Date: Wed, 10 Jul 2019 16:56:40 +0300
Subject: [PATCH 058/162] Links fix
---
translations/README-ru.md | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/translations/README-ru.md b/translations/README-ru.md
index df194261..ad6e9a68 100644
--- a/translations/README-ru.md
+++ b/translations/README-ru.md
@@ -16,18 +16,18 @@
## Translations:
-* [English](README.md)
-* [Español](translations/README-es.md)
-* [Français](translations/README-fr.md)
-* [Português do Brasil](translations/README-pt_BR.md)
-* [中文版](translations/README-cn.md)
-* [日本語](translations/README-ja.md)
-* [한국어](translations/README-ko.md)
-* [Turkish](translations/README-tr.md)
-* [Greek](translations/README-gr.md)
-* [Magyar](translations/README-hu.md)
-* [Polish](translations/README-pl.md)
-* [Русский](translations/README-ru.md)
+* [English](../README.md)
+* [Español](../translations/README-es.md)
+* [Français](../translations/README-fr.md)
+* [Português do Brasil](../translations/README-pt_BR.md)
+* [中文版](../translations/README-cn.md)
+* [日本語](../translations/README-ja.md)
+* [한국어](../translations/README-ko.md)
+* [Turkish](../translations/README-tr.md)
+* [Greek](../translations/README-gr.md)
+* [Magyar](../translations/README-hu.md)
+* [Polish](../translations/README-pl.md)
+* [Русский](../translations/README-ru.md)
## Что такое Регулярное выражение?
From ba0298dc7813a5c8ab73d20ed719b947d8c89d6f Mon Sep 17 00:00:00 2001
From: pravdakotchestno
Date: Wed, 10 Jul 2019 16:57:18 +0300
Subject: [PATCH 059/162] Links fix
---
translations/README-es.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/README-es.md b/translations/README-es.md
index d12f2343..a65a5fed 100644
--- a/translations/README-es.md
+++ b/translations/README-es.md
@@ -28,7 +28,7 @@
* [Greek](../translations/README-gr.md)
* [Magyar](../translations/README-hu.md)
* [Polish](../translations/README-pl.md)
-* [Русский](translations/README-ru.md)
+* [Русский](../translations/README-ru.md)
## Qué es una expresión regular?
> Una expresión regular es un grupo de caracteres o símbolos, los cuales son usados para buscar un patrón específico dentro de un texto.
From 48dc9be5ef9924f4b46c7dc2c4a5893d3307bcdd Mon Sep 17 00:00:00 2001
From: Oleg Ermakov
Date: Thu, 11 Jul 2019 17:51:20 +0300
Subject: [PATCH 060/162] Fixed translation
Fixed spelling of some words
---
translations/README-ru.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/translations/README-ru.md b/translations/README-ru.md
index ad6e9a68..e00c2280 100644
--- a/translations/README-ru.md
+++ b/translations/README-ru.md
@@ -311,12 +311,12 @@
## 2.7 Экранирование спецсимволов
Обратный слэш `\` используется в регулярных выражениях для экранирования следующего символа.
-Это позволяет формировать шаблоны с поиском зарезервированных символамов, таких как `{ } [ ] / \ + * . $ ^ | ?`.
+Это позволяет формировать шаблоны с поиском зарезервированных символов, таких как `{ } [ ] / \ + * . $ ^ | ?`.
Для использования спецсимвола в шаблоне необходимо указать символ '\' перед ним.
Как упомянуто выше, символ `.` является зарезервированным и соответствует любому значению, кроме символа новой строки.
Бывают ситуации, когда необходимо найти точку в предложении, для таких случаев применимо экранирование. Рассмотрим выражение
-`(f|c|m)at\.?`, что соответствует следующему шаблону: стройчный символ `f`, `c` или `m`, за которым следует строчные буквы `a` и `t`, с опциональной `.` точкой в конце.
+`(f|c|m)at\.?`, что соответствует следующему шаблону: строчный символ `f`, `c` или `m`, за которым следует строчные буквы `a` и `t`, с опциональной `.` точкой в конце.
"(f|c|m)at\.?" => The fat cat sat on the mat.
From eb62537b48ceb8379b4c0ec39238006a63718214 Mon Sep 17 00:00:00 2001
From: Seasle
Date: Fri, 2 Aug 2019 21:11:43 +0600
Subject: [PATCH 061/162] Fixes
Fixed translation;
Fixed whitespaces;
Fixed inline code blocks.
---
translations/README-ru.md | 154 +++++++++++++++++++-------------------
1 file changed, 77 insertions(+), 77 deletions(-)
diff --git a/translations/README-ru.md b/translations/README-ru.md
index e00c2280..f1d10605 100644
--- a/translations/README-ru.md
+++ b/translations/README-ru.md
@@ -33,12 +33,12 @@
> Регулярное выражение - это группа букв или символов, которая используется для поиска определенного шаблона в тексте.
-Регулярное выражение - это шаблон, сопоставляемый с искомой строкой слева направо.
-Термин «Регулярное выражение» сложно произносить каждый раз, поэтому, обычно, вы будете сталкиваться с сокращениями "регэкспы" или "регулярки".
+Регулярное выражение - это шаблон, сопоставляемый с искомой строкой слева направо.
+Термин «Регулярное выражение» сложно произносить каждый раз, поэтому, обычно, вы будете сталкиваться с сокращениями "регэкспы" или "регулярки".
Регулярные выражения используются для замен текста внутри строк, валидации форм,
извлечений подстрок по определенным шаблонам и множества других вещей.
-Представьте, что вы пишете приложение и хотите установить правила, по которым пользователь выбирает свой юзернейм. Мы хотим, чтобы имя пользователя содержало буквы, цифры, подчеркивания и дефисы. Мы также хотим ограничить количество символов в имени пользователя, чтобы оно не выглядело безобразно.
+Представьте, что вы пишете приложение и хотите установить правила, по которым пользователь выбирает свой юзернейм. Мы хотим, чтобы имя пользователя содержало буквы, цифры, подчеркивания и дефисы. Мы также хотим ограничить количество символов в имени пользователя, чтобы оно не выглядело безобразно.
Для этого, используем следующее регулярное выражение:
@@ -47,7 +47,7 @@
-Регулярное выражения выше может принимать строки `john_doe`,` jo-hn_doe` и `john12_as`.
+Регулярное выражения выше может принимать строки `john_doe`,`jo-hn_doe` и `john12_as`.
Оно не валидирует `Jo`, поскольку эта строка содержит заглавные буквы, а также она слишком короткая.
## Содержание
@@ -82,8 +82,8 @@
## 1. Совпадения.
-В сущности, регулярное выражение - это просто набор символов, который мы используем для поиска в тексте.
-Например, регулярное выражение `the` состоит из буквы` t`, за которой следует буква `h`, за которой следует буква `e`.
+В сущности, регулярное выражение - это просто набор символов, который мы используем для поиска в тексте.
+Например, регулярное выражение `the` состоит из буквы `t`, за которой следует буква `h`, за которой следует буква `e`.
"the" => The fat cat sat on the mat.
@@ -91,9 +91,9 @@
[Запустить регулярное выражение](https://regex101.com/r/dmRygT/1)
-Регулярное выражение `123` соответствует строке` 123`. Регулярное выражение сопоставляется с входной строкой, сравнивая
-каждый символ в регулярном выражении с каждым символом во входной строке по одному символу за другим. Регулярные выражения
-обычно чувствительны к регистру, поэтому регулярное выражение `The` не будет соответствовать строке` the`.
+Регулярное выражение `123` соответствует строке `123`. Регулярное выражение сопоставляется с входной строкой, сравнивая
+каждый символ в регулярном выражении с каждым символом во входной строке по одному символу за другим. Регулярные выражения
+обычно чувствительны к регистру, поэтому регулярное выражение `The` не будет соответствовать строке `the`.
"The" => The fat cat sat on the mat.
@@ -104,7 +104,7 @@
## 2. Метасимволы
Метасимволы это блоки, из которых строятся регулярные выражения. Метасимволы не означают что-то сами по себе,
-вместо этого они интерпретируются для распознавания специальных групп символов. Некоторые метасимволы имеют
+вместо этого они интерпретируются для распознавания специальных групп символов. Некоторые метасимволы имеют
особые обозначения и пишутся в квадратных скобках. Существуют следующие метасимволы:
|Метасимволы|Описание|
@@ -119,14 +119,14 @@
|(xyz)|Группа символов. Находить только символы xyz в указанном порядке.|
|||Чередование. Находить либо буквы до, либо буквы после символа.|
|\|Экранирование. Позволяет находить зарезервированные символы: [ ] ( ) { } . * + ? ^ $ \ ||
-|^|Обозначает начало пользовательского ввода.|
+|^|Обозначает начало пользовательского ввода.|
|$|Обозначает конец пользовательского ввода.|
## 2.1 Точка
Точка `.` это простейший пример метасимвола. Метасимвол `.`
находит любой отдельный символ. Точка не будет находить символы перехода или перевода строки.
-Например, регулярное выражение '.ar' обозначает: любой символ, за которым следуют буквы ` a` и `r`.
+Например, регулярное выражение `.ar` обозначает: любой символ, за которым следуют буквы `a` и `r`.
".ar" => The car parked in the garage.
@@ -137,9 +137,9 @@
## 2.2 Набор символов.
Набор символов также называется классом символов. Квадратные скобки используются
-для определения набора символов. Дефис используется для указания диапазона символов.
-Порядок следования символов, заданный в квадратных скобках, не важен. Например,
-регулярное выражение `[Tt]he` обозначает заглавную 'T' или строчную 't', за которой следуют буквы 'h' и 'e'.
+для определения набора символов. Дефис используется для указания диапазона символов.
+Порядок следования символов, заданный в квадратных скобках, не важен. Например,
+регулярное выражение `[Tt]he` обозначает заглавную `T` или строчную `t`, за которой следуют буквы `h` и `e`.
"[Tt]he" => The car parked in the garage.
@@ -147,8 +147,8 @@
[Запустить регулярное выражение](https://regex101.com/r/2ITLQ4/1)
-Точка внутри набора символов, однако, обозначает непосредственно точку, как символ.
-Регулярное выражение `ar[.]` обозначает строчную 'a', за которой следует 'r', за которой следует '.' (символ точки).
+Точка внутри набора символов, однако, обозначает непосредственно точку, как символ.
+Регулярное выражение `ar[.]` обозначает строчную `a`, за которой следует `r`, за которой следует `.` (символ точки).
"ar[.]" => A garage is a good place to park a car.
@@ -158,8 +158,8 @@
### 2.2.1 Отрицание набора символов
-Знак вставки '^' обозначает начало строки, однако, когда вы вписываете его после открытия квадратных скобок, он отрицает набор символов.
-Например, регулярное выражение `[^c]ar` обозначает любой символ, кроме 'c', за которым следуют буквы 'a' и 'r'.
+Знак вставки `^` обозначает начало строки, однако, когда вы вписываете его после открытия квадратных скобок, он отрицает набор символов.
+Например, регулярное выражение `[^c]ar` обозначает любой символ, кроме `c`, за которым следуют буквы `a` и `r`.
"[^c]ar" => The car parked in the garage.
@@ -169,15 +169,15 @@
## 2.3 Повторения
-Символы `+`, `*` or `?` используются для обозначения того, как сколько раз появляется какой-либо подшаблон.
+Символы `+`, `*` или `?` используются для обозначения того, как сколько раз появляется какой-либо подшаблон.
Данные метасимволы могут вести себя по-разному, в зависимости от ситуации.
### 2.3.1 Звёздочка
-Символ `*` обозначает ноль или более повторений предыдущего совпадения.
-Регулярное выражение `a *` означает ноль или более повторений предыдущего
+Символ `*` обозначает ноль или более повторений предыдущего совпадения.
+Регулярное выражение `a*` означает ноль или более повторений предыдущего
строчного символа `a`. Если же символ появляется после набора или класса символов,
-он находит повторения всего набора символов. Например, регулярное выражение `[a-z] *`
+он находит повторения всего набора символов. Например, регулярное выражение `[a-z]*`
означает любое количество строчных букв в строке.
@@ -186,10 +186,10 @@
[Запустить регулярное выражение](https://regex101.com/r/7m8me5/1)
-Символы можно комбинировать, так, например, символ `*` может использоваться с метасимволом `.`
-для поиска одной строки с произвольным содержанием `. * `. Символ `*` может использоваться
-с символом пробела `\ s`, чтобы находить строки с символами пробела. Например, выражение
-`\ s * cat \ s *` означает: ноль или более пробелов, за которыми следует слово `cat`,
+Символы можно комбинировать, так, например, символ `*` может использоваться с метасимволом `.`
+для поиска одной строки с произвольным содержанием `.*`. Символ `*` может использоваться
+с символом пробела `\s`, чтобы находить строки с символами пробела. Например, выражение
+`\s*cat\s*` означает: ноль или более пробелов, за которыми следует слово `cat`,
за которым следует ноль или более символов пробела.
@@ -200,9 +200,9 @@
### 2.3.2 Плюс
-Символ `+` соответствует одному или более повторению предыдущего символа. Например,
-регулярное выражение `c.+t` означает строчную `c`, за которой следует по крайней мере один символ,
-следом за которым идёт символ `t`. Стоит уточнить, что в данном шаблоне, `t` является последним` t` в предложении.
+Символ `+` соответствует одному или более повторению предыдущего символа. Например,
+регулярное выражение `c.+t` означает строчную `c`, за которой следует по крайней мере один символ,
+следом за которым идёт символ `t`. Стоит уточнить, что в данном шаблоне, `t` является последним `t` в предложении.
"c.+t" => The fat cat sat on the mat.
@@ -212,9 +212,9 @@
### 2.3.3 Знак вопроса
-В регулярном выражении метасимвол `?` делает предыдущий символ необязательным.
+В регулярном выражении метасимвол `?` делает предыдущий символ необязательным.
Этот символ соответствует нулю или одному экземпляру предыдущего символа.
-Например, регулярное выражение `[T]?he` означает необязательную заглавную букву `T`, за которой следуют символы 'h' и 'e'.
+Например, регулярное выражение `[T]?he` означает необязательную заглавную букву `T`, за которой следуют символы `h` и `e`.
"[T]he" => The car is parked in the garage.
@@ -230,9 +230,9 @@
## 2.4 Фигурные скобки
-В фигурных скобках, которые также называются квантификаторами, указывается,
-сколько раз символ или группа символов могут повторяться. Например, регулярное выражение
-`[0-9] {2,3}` означает совпадение не менее 2 но не более 3 цифр в диапазоне от 0 до 9.
+В фигурных скобках, которые также называются квантификаторами, указывается,
+сколько раз символ или группа символов могут повторяться. Например, регулярное выражение
+`[0-9]{2,3}` означает совпадение не менее 2 но не более 3 цифр в диапазоне от 0 до 9.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -240,9 +240,9 @@
[Запустить регулярное выражение](https://regex101.com/r/juM86s/1)
-Уберём второй номер (цифру 3), тогда, регулярное выражение `[0-9] {2,}` будет означать
+Уберём второй номер (цифру 3), тогда, регулярное выражение `[0-9]{2,}` будет означать
совпадение 2 или более цифр. Если мы также удалим запятую, то регулярное выражение
-`[0-9] {3}` будет означать совпадение точно с 3 цифрами.
+`[0-9]{3}` будет означать совпадение точно с 3 цифрами.
"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
@@ -260,11 +260,11 @@
Скобочные группы это группы подшаблонов, которые написаны в круглых скобках
`(...)`. Как мы уже говорили ранее в регулярном выражении, если мы поставим квантификатор
-после символа, он будет повторять предыдущий символ. Но если мы поставим квантификатор после
-скобочной группы, он будет искать всю группу. Например, регулярное выражение `(ab) *` соответствует
+после символа, он будет повторять предыдущий символ. Но если мы поставим квантификатор после
+скобочной группы, он будет искать всю группу. Например, регулярное выражение `(ab)*` соответствует
нулю или более повторений символа "ab". Мы также можем использовать метасимвол чередования `|`
внутри скобочной группы. Например, регулярное выражение `(c|g|p)ar` означает поиск одной из строчных букв `c`,
-`g` или `p`, за которыми следуют буквы 'a' и 'r'.
+`g` или `p`, за которыми следуют буквы `a` и `r`.
"(c|g|p)ar" => The car is parked in the garage.
@@ -272,15 +272,15 @@
[Запустить регулярное выражение](https://regex101.com/r/tUxrBG/1)
-Обратите внимание, что скобочные группы не только находят, но и захватывают символы для использования на родительском языке.
+Обратите внимание, что скобочные группы не только находят, но и захватывают символы для использования на родительском языке.
Родительским языком может быть python, javascript или практически любой язык, который реализует использование регулярных выражений как параметров функций.
### 2.5.1 Не запоминающие скобочные группы
Бывает так, что группу определить нужно, а вот запоминать их содержимое в массиве не требуется.
-Подобный трюк осуществляется при помощи зарезервированной комбинации `?:`
-в круглых скобках `(...)`. Например, регулярное выражение `(?:c|g|p)ar` будет находить такие же шаблоны как и
-`(c|g|p)ar`, однако скобочная группа при этом создана не будет.
+Подобный трюк осуществляется при помощи зарезервированной комбинации `?:`
+в круглых скобках `(...)`. Например, регулярное выражение `(?:c|g|p)ar` будет находить такие же шаблоны как и
+`(c|g|p)ar`, однако скобочная группа при этом создана не будет.
"(?:c|g|p)ar" => The car is parked in the garage.
@@ -289,16 +289,16 @@
[Запустить регулярное выражение](https://regex101.com/r/Rm7Me8/1)
Не запоминающиеся группы пригодиться, когда они используются в функциях поиска и замены
-или в сочетании со скобочными группами, например, для предпросмотра при создании скобочной группы или другого вида выходных данных,
+или в сочетании со скобочными группами, например, для предпросмотра при создании скобочной группы или другого вида выходных данных,
смотрите также [4. Опережающие и ретроспективные проверки](#4-опережающие-и-ретроспективные-проверки).
## 2.6 Альтернация
В регулярных выражениях, вертикальная черта `|` используется для определения альтернации (чередования).
Альтернация по своей сути похожа на оператор ИЛИ между логическими выражениями. Может создаться впечатление, что
-чередование это то же самое, что и определение набора символов. Однако, большая разница между ними в том, что
+чередование это то же самое, что и определение набора символов. Однако, большая разница между ними в том, что
набор символов работает на уровне конкретных символов, в то время как альтернация работает на уровне выражений.
-Например, регулярное выражение `(T|t)he|car` объединяет два шаблона (заглавная `T` ИЛИ строчная `t`, с продолжением из 'h' и 'e') и шаблон
+Например, регулярное выражение `(T|t)he|car` объединяет два шаблона (заглавная `T` ИЛИ строчная `t`, с продолжением из `h` и `e`) и шаблон
(строчная `c`, затем строчная `a`, за которой следует строчная `r`). Таким образом, в поиске будет участвовать любой из данных шаблонов,
по аналогии с логической операцией ИЛИ в программировании и алгебре выражений.
@@ -310,13 +310,13 @@
## 2.7 Экранирование спецсимволов
-Обратный слэш `\` используется в регулярных выражениях для экранирования следующего символа.
-Это позволяет формировать шаблоны с поиском зарезервированных символов, таких как `{ } [ ] / \ + * . $ ^ | ?`.
-Для использования спецсимвола в шаблоне необходимо указать символ '\' перед ним.
+Обратный слэш `\` используется в регулярных выражениях для экранирования следующего символа.
+Это позволяет формировать шаблоны с поиском зарезервированных символов, таких как `{ } [ ] / \ + * . $ ^ | ?`.
+Для использования спецсимвола в шаблоне необходимо указать символ `\` перед ним.
-Как упомянуто выше, символ `.` является зарезервированным и соответствует любому значению, кроме символа новой строки.
+Как упомянуто выше, символ `.` является зарезервированным и соответствует любому значению, кроме символа новой строки.
Бывают ситуации, когда необходимо найти точку в предложении, для таких случаев применимо экранирование. Рассмотрим выражение
-`(f|c|m)at\.?`, что соответствует следующему шаблону: строчный символ `f`, `c` или `m`, за которым следует строчные буквы `a` и `t`, с опциональной `.` точкой в конце.
+`(f|c|m)at\.?`, что соответствует следующему шаблону: строчный символ `f`, `c` или `m`, за которым следует строчные буквы `a` и `t`, с опциональной `.` точкой в конце.
"(f|c|m)at\.?" => The fat cat sat on the mat.
@@ -326,19 +326,19 @@
## 2.8 Якоря
-Понятие якорей в регулярных выражениях используется для обозначения проверок, является ли
+Понятие якорей в регулярных выражениях используется для обозначения проверок, является ли
соответствующий символ начальным или конечным символом входной строки. Якоря бывают двух типов:
Первый тип - Каретка `^`, проверяет, является ли соответствующий символ начальным символом в тексте.
Второй тип - Доллар `$`, проверяет, является ли соответствующий символ последним символом входной строки.
### 2.8.1 Каретка
-Символ каретки `^` используется для проверки, является ли соответствующий символ первым символом входной строки.
+Символ каретки `^` используется для проверки, является ли соответствующий символ первым символом входной строки.
Если мы применяем следующее регулярное выражение `^a` (если a является начальным символом) для строки `abc`,
совпадение будет соответствовать букве `a`. Если же мы используем регулярное выражение `^b` на той же строке,
-мы не получим совпадения, поскольку во входящей строке `abc` "b" не является первым символом. Рассмотрим другое
+мы не получим совпадения, поскольку во входящей строке `abc` "b" не является первым символом. Рассмотрим другое
регулярное выражение: `^(T|t)he`, обозначающее заглавную `T` или строчную `t` как первый символ, за которым следуют
-символы букв 'h' и 'e'. Cоответственно:
+символы букв `h` и `e`. Cоответственно:
"(T|t)he" => The car is parked in the garage.
@@ -371,10 +371,10 @@
[Запустить регулярное выражение](https://regex101.com/r/t0AkOd/1)
-## 3. Наборы сокращений и диапазоны
+## 3. Наборы сокращений и диапазоны
Регулярные выражения предоставляют сокращения для часто используемых наборов символов,
-которые предлагают удобные сокращения для часто используемых регулярных выражений.
+которые предлагают удобные сокращения для часто используемых регулярных выражений.
Наборы сокращенных символов следующие:
|Сокращение|Описание|
@@ -389,12 +389,12 @@
## 4. Опережающие и ретроспективные проверки
-Опережающие и ретроспективные проверки (в английской литературе lookbehind, lookahead) это особый вид
-***не запоминающих скобочных групп*** (находящих совпадения, но не добавляющих в массив).
+Опережающие и ретроспективные проверки (в английской литературе lookbehind, lookahead) это особый вид
+***не запоминающих скобочных групп*** (находящих совпадения, но не добавляющих в массив).
Данные проверки используются, мы знаем, что шаблон предшествует или сопровождается другим шаблоном.
Например, мы хотим получить получить цену в долларах `$`, из следующей входной строки
`$4.44 and $10.88`. Для этого используем следующее регулярное выражение `(?<=\$)[0-9\.]*`, означающее
-получение всех дробных (с точкой `.`) цифр, которым предшествует знак доллара `$`. Существуют
+получение всех дробных (с точкой `.`) цифр, которым предшествует знак доллара `$`. Существуют
следующие виды проверок:
|Символ|Описание|
@@ -407,11 +407,11 @@
### 4.1 Положительное опережающее условие
Положительное опережающее утверждение (assert) означает, что за первой частью выражения должно следовать
-опережающее выражение (lookahead expression). (по аналогии с условиями, if (..) then (..)).
-Возвращенное совпадение содержит только текст, который соответствует первой части выражения.
+опережающее выражение (lookahead expression). (по аналогии с условиями, if (..) then (..)).
+Возвращенное совпадение содержит только текст, который соответствует первой части выражения.
Для определения положительного опережающего условия используются круглые скобки. В этих скобках используется
-знак вопроса со знаком равенства: `(?=...)`. Опережающее выражение, записывается в скобках после знака равенства.
-Рассмотрим пример регулярного выражения: `(T|t)he(?=\sfat)`, обозначающее опциональное наличие строчной `t` или заглавной `T`,
+знак вопроса со знаком равенства: `(?=...)`. Опережающее выражение, записывается в скобках после знака равенства.
+Рассмотрим пример регулярного выражения: `(T|t)he(?=\sfat)`, обозначающее опциональное наличие строчной `t` или заглавной `T`,
следом буквы `h` и `e`. В скобках, мы определяем положительное опережающее условие, которое сообщает движку регулярных выражений
информацию о том, что после шаблона `The` или `the` будет следовать слово `fat`.
@@ -423,7 +423,7 @@
### 4.2 Отрицательное опережающее условие
-Отрицательное опережающее условие работает по обратному принципу: используется, когда нам нужно получить
+Отрицательное опережающее условие работает по обратному принципу: используется, когда нам нужно получить
все совпадения из входной строки, за которыми НЕ следует определенный шаблон. Отрицательное опережающее условие
определяется таким же образом, как и позитивное, с той лишь разницей, что вместо равенства `=` мы ставим
восклицательный знак `!` (отрицание) например: `(?!...)`. Рассмотрим выражение `(T|t)he(?!\sfat)`, в котором мы
@@ -438,8 +438,8 @@
### 4.3 Положительное ретроспективное условие
Положительное ретроспективное условие используется чтобы найти все совпадения, которым предшествует
-определенный шаблон. Условие определяется как `(?<=...)`. Например, выражение `(?<=(T|t)he\s)(fat|mat)` означает,
-найти все слова `fat` или `mat` из входной строки, которым предшествует слово `The` or `the`.
+определенный шаблон. Условие определяется как `(?<=...)`. Например, выражение `(?<=(T|t)he\s)(fat|mat)` означает,
+найти все слова `fat` или `mat` из входной строки, которым предшествует слово `The` или `the`.
"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
@@ -461,7 +461,7 @@
## 5. Флаги
-Флаги, также называемые модификаторами, изменяют вывод регулярного выражения.
+Флаги, также называемые модификаторами, изменяют вывод регулярного выражения.
Эти флаги могут быть использованы в любом порядке или комбинации, и являются
неотъемлемой частью регулярных выражений.
@@ -474,8 +474,8 @@
### 5.1 Поиск без учета регистра
Модификатор `i` используется для поиска без учета регистра. Например, регулярное выражение
-`/The/gi` означает заглавную `T` следом строчные `h` и `e`. В конце регулярного выражения флаг `i`,
-указывающий движку регулярных выражений игнорировать регистр. Помимо `i`, для поиска шаблона во
+`/The/gi` означает заглавную `T` следом строчные `h` и `e`. В конце регулярного выражения флаг `i`,
+указывающий движку регулярных выражений игнорировать регистр. Помимо `i`, для поиска шаблона во
всем входном тексте, использован флаг `g`.
@@ -493,8 +493,8 @@
### 5.2 Глобальный поиск
Модификатор `g` используется для выполнения глобального сопоставления (найти все совпадения, а не останавливаться после первого).
-Например, регулярное выражение `/.(at)/g` означает любой символ кроме символа новой строки, следом строчная `a`, далее строчная `t`.
-Из-за использования флага `g` в конце регулярного выражения, теперь оно найдет все совпадения во входной строке, а не остановится на первом
+Например, регулярное выражение `/.(at)/g` означает любой символ кроме символа новой строки, следом строчная `a`, далее строчная `t`.
+Из-за использования флага `g` в конце регулярного выражения, теперь оно найдет все совпадения во входной строке, а не остановится на первом
(что является поведением по умолчанию).
@@ -513,9 +513,9 @@
Модификатор `m` используется для многострочного поиска. Как мы обсуждали ранее,
якоря `(^, $)` используются для проверки, является ли шаблон началом или концом входной строки.
-Но если мы хотим, чтобы якоря работали в каждой строке, мы используем флаг `m`. Например,
-регулярное выражение `/at(.)?$/gm` означает строчную `a`, следом строчная `t` и любой
-символ кроме начала новой строки, идущий опционально (не обязательно). Из-за флага `m` механизм
+Но если мы хотим, чтобы якоря работали в каждой строке, мы используем флаг `m`. Например,
+регулярное выражение `/at(.)?$/gm` означает строчную `a`, следом строчная `t` и любой
+символ кроме начала новой строки, идущий опционально (не обязательно). Из-за флага `m` механизм
регулярных выражений будет искать данный шаблон в конце каждой строки в тексте.
@@ -535,7 +535,7 @@
[Запустить регулярное выражение](https://regex101.com/r/E88WE2/1)
## 6. Жадные vs ленивые квантификаторы
-По умолчанию регулярное выражение выполняет жадное сопоставление, то есть оно будет
+По умолчанию регулярное выражение выполняет жадное сопоставление, то есть оно будет
искать совпадения как можно дольше. Мы можем использовать `?` для ленивого поиска, который
будет стремиться быть как можно более коротким по времени.
From 1cde7e2d775e83462ff1b86097c579f6fc57d146 Mon Sep 17 00:00:00 2001
From: Gordon Bai
Date: Mon, 5 Aug 2019 16:54:13 +0100
Subject: [PATCH 062/162] Correct a typo
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2dee7bc2..dd140b7f 100644
--- a/README.md
+++ b/README.md
@@ -278,7 +278,7 @@ regular expression `[0-9]{3}` means: Match exactly 3 digits.
## 2.5 Capturing Group
A capturing group is a group of sub-patterns that is written inside Parentheses
-`(...)`. Like As we discussed before that in regular expression if we put a quantifier
+`(...)`. Like as we discussed before that in regular expression if we put a quantifier
after a character then it will repeat the preceding character. But if we put quantifier
after a capturing group then it repeats the whole capturing group. For example,
the regular expression `(ab)*` matches zero or more repetitions of the character
From 8dc654ae1ffafcdad9abd9c020019cac786d7771 Mon Sep 17 00:00:00 2001
From: liuyonghui <1359158019@qq.com>
Date: Tue, 6 Aug 2019 02:02:47 +0800
Subject: [PATCH 063/162] fix: correct a typo
---
translations/README-zh-simple.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md
index ee33936d..43f55ef5 100644
--- a/translations/README-zh-simple.md
+++ b/translations/README-zh-simple.md
@@ -442,7 +442,7 @@
### 5.2 全局搜索 (Global search)
-修饰符 `g` 常用语执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部).
+修饰符 `g` 常用于执行一个全局搜索匹配, 即(不仅仅返回第一个匹配的, 而是返回全部).
例如, 表达式 `/.(at)/g` 表示搜索 任意字符(除了换行) + `at`, 并返回全部结果.
From 3538d4353494d9d7db6e6d694c4f82e61b0849c8 Mon Sep 17 00:00:00 2001
From: imyhui <1359158019@qq.com>
Date: Tue, 6 Aug 2019 09:34:20 +0800
Subject: [PATCH 064/162] fix: correct two typo errs
---
translations/README-cn.md | 2 +-
translations/README-zh-simple.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/translations/README-cn.md b/translations/README-cn.md
index 205efc35..0ae81134 100644
--- a/translations/README-cn.md
+++ b/translations/README-cn.md
@@ -465,7 +465,7 @@
### 5.3 多行修饰符 (Multiline)
-多行修饰符 `m` 常用语执行一个多行匹配.
+多行修饰符 `m` 常用于执行一个多行匹配.
像之前介绍的 `(^,$)` 用于检查格式是否是在待检测字符串的开头或结尾. 但我们如果想要它在每行的开头和结尾生效, 我们需要用到多行修饰符 `m`.
diff --git a/translations/README-zh-simple.md b/translations/README-zh-simple.md
index 43f55ef5..1a1736e2 100644
--- a/translations/README-zh-simple.md
+++ b/translations/README-zh-simple.md
@@ -459,7 +459,7 @@
### 5.3 多行修饰符 (Multiline)
-多行修饰符 `m` 常用语执行一个多行匹配.
+多行修饰符 `m` 常用于执行一个多行匹配.
像之前介绍的 `(^,$)` 用于检查格式是否是在待检测字符串的开头或结尾. 但我们如果想要它在每行的开头和结尾生效, 我们需要用到多行修饰符 `m`.
From 8a486acafcc6963eb07f03558726090c5af03751 Mon Sep 17 00:00:00 2001
From: ImKifu
Date: Tue, 6 Aug 2019 08:58:03 +0700
Subject: [PATCH 065/162] add vietnamese
---
translations/README-vn.md | 619 ++++++++++++++++++++++++++++++++++++++
1 file changed, 619 insertions(+)
create mode 100644 translations/README-vn.md
diff --git a/translations/README-vn.md b/translations/README-vn.md
new file mode 100644
index 00000000..e2e3918c
--- /dev/null
+++ b/translations/README-vn.md
@@ -0,0 +1,619 @@
+
+
+
+
+
+
+
+
+
+
+
+## Translations:
+
+* [English](README.md)
+* [Español](translations/README-es.md)
+* [Français](translations/README-fr.md)
+* [Português do Brasil](translations/README-pt_BR.md)
+* [中文版](translations/README-cn.md)
+* [日本語](translations/README-ja.md)
+* [한국어](translations/README-ko.md)
+* [Turkish](translations/README-tr.md)
+* [Greek](translations/README-gr.md)
+* [Magyar](translations/README-hu.md)
+* [Polish](translations/README-pl.md)
+* [Русский](translations/README-ru.md)
+* [Vietnamese](translations/README-vn.md)
+
+
+## Biểu thức chính quy là gì?
+
+> Biểu thức chính quy là một nhóm các ký tự hoặc ký hiệu được sử dụng để tìm một mẫu cụ thể từ một văn bản.
+
+Biểu thức chính quy là một khuôn mẫu được khớp với chuỗi các từ, từ trái sang phải. Từ "Biểu thức chính quy" là một câu cửa miệng, bạn thường sẽ tìm thấy thuật ngữ viết tắt là "regex" hoặc "regexp". Biểu thức chính quy được sử dụng để thay thế một văn bản trong một chuỗi, xác thực mẫu, trích xuất một chuỗi con từ một chuỗi dựa trên khớp mẫu và hơn thế nữa.
+
+Hãy tưởng tượng bạn đang viết một ứng dụng và bạn muốn đặt quy tắc khi người dùng chọn tên người dùng của họ. Chúng tôi muốn cho phép tên người dùng chứa các chữ cái, số, dấu gạch dưới và dấu gạch nối. Chúng tôi cũng muốn giới hạn số lượng ký tự trong tên người dùng để nó trông không xấu. Chúng tôi sử dụng biểu thức chính quy sau để xác thực tên người dùng:
+
+
+
+
+
+
+
+Trên biểu thức chính quy có thể chấp nhận các chuỗi `john_doe`, `jo-hn_doe` và `john12_as`. Nó không khớp với `Jo` vì chuỗi đó chứa chữ hoa và nó quá ngắn.
+
+## Table of Contents
+
+- [Basic Matchers](#1-basic-matchers)
+- [Meta character](#2-meta-characters)
+ - [Full stop](#21-full-stop)
+ - [Character set](#22-character-set)
+ - [Negated character set](#221-negated-character-set)
+ - [Repetitions](#23-repetitions)
+ - [The Star](#231-the-star)
+ - [The Plus](#232-the-plus)
+ - [The Question Mark](#233-the-question-mark)
+ - [Braces](#24-braces)
+ - [Character Group](#25-character-group)
+ - [Alternation](#26-alternation)
+ - [Escaping special character](#27-escaping-special-character)
+ - [Anchors](#28-anchors)
+ - [Caret](#281-caret)
+ - [Dollar](#282-dollar)
+- [Shorthand Character Sets](#3-shorthand-character-sets)
+- [Lookaround](#4-lookaround)
+ - [Positive Lookahead](#41-positive-lookahead)
+ - [Negative Lookahead](#42-negative-lookahead)
+ - [Positive Lookbehind](#43-positive-lookbehind)
+ - [Negative Lookbehind](#44-negative-lookbehind)
+- [Flags](#5-flags)
+ - [Case Insensitive](#51-case-insensitive)
+ - [Global search](#52-global-search)
+ - [Multiline](#53-multiline)
+- [Greedy vs lazy matching](#6-greedy-vs-lazy-matching)
+
+
+## 1. Basic Matchers
+
+A regular expression is just a pattern of characters that we use to perform
+search in a text. For example, the regular expression `the` means: the letter
+`t`, followed by the letter `h`, followed by the letter `e`.
+
+
+Biểu thức chính quy chỉ là một mẫu các ký tự mà chúng ta sử dụng để thực hiện tìm kiếm trong văn bản. Ví dụ, biểu thức chính quy `the` có nghĩa là: chữ `t`, tiếp theo là chữ `h`, tiếp theo là chữ `e`.
+
+
+"the" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/dmRygT/1)
+
+Biểu thức chính quy `123` khớp với chuỗi `123`. Biểu thức chính quy được khớp với chuỗi đầu vào bằng cách so sánh từng ký tự trong biểu thức chính quy với từng ký tự trong chuỗi đầu vào, lần lượt từng ký tự. Biểu thức chính quy thường phân biệt chữ hoa chữ thường nên biểu thức chính quy `The` sẽ không khớp với chuỗi `the`.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/1paXsy/1)
+
+## 2. Meta Characters
+
+Các ký tự `meta` là các khối xây dựng của các biểu thức chính quy. Các ký tự `meta` không biểu diễn chính nó mà thay vào đó được diễn giải theo một cách đặc biệt nào đó. Một số ký tự `meta` có ý nghĩa đặc biệt và được viết bên trong dấu ngoặc vuông. Các ký tự meta như sau:
+
+|Meta character|Description|
+|:----:|----|
+|.|Khớp với tất cả các kí tự trừ dấu xuống dòng.|
+|[ ]|Lớp kí tự. Khớp với bất kỳ ký tự nào nằm giữa dấu ngoặc vuông.|
+|[^ ]|Lớp kí tự phủ định. Khớp với bất kỳ ký tự nào không có trong dấu ngoặc vuông.|
+|*|Khớp 0 hoặc nhiều lần lặp lại của kí tự trước.|
+|+|Khớp 1 hoặc nhiều lần lặp lại của kí tự trước.|
+|?|Làm cho kí tự trước tùy chọn.|
+|{n,m}|Braces. Khớp ít nhất là "n" nhưng không nhiều hơn "m" lặp lại của kí tự trước.|
+|(xyz)|Nhóm kí tự. Khớp các ký tự xyz theo thứ tự chính xác đó.|
+|||Thay thế. Khớp các ký tự trước hoặc ký tự sau ký hiệu.|
+|\|Thoát khỏi kí tự tiếp theo. Điều này cho phép bạn khớp các ký tự dành riêng [ ] ( ) { } . * + ? ^ $ \ ||
+|^|Khớp với sự bắt đầu của đầu vào.|
+|$|Khớp với kết thúc đầu vào.|
+
+## 2.1 Full stop
+
+
+Full stop `.` là ví dụ đơn giản nhất về ký tự meta. Kí tự meta `.`
+khớp với bất kì kí tự nào. Nó sẽ không khớp kí tự trả về (return) hoặc xuống dòng (newline)
+
+Ví dụ, biểu thức chính quy `.ar` có ý nghĩa: bất kỳ ký tự nào, theo sau là chữ `a`, tiếp theo là chữ `r`.
+
+
+".ar" => The car parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/xc9GkU/1)
+
+## 2.2 Character set
+
+Bộ ký tự cũng được gọi là lớp kí tự. Dấu ngoặc vuông được sử dụng để chỉ định bộ ký tự. Sử dụng dấu gạch nối bên trong bộ ký tự để chỉ định phạm vi của các ký tự. Thứ tự của phạm vi ký tự trong dấu ngoặc vuông không quan trọng.
+
+Ví dụ: biểu thức chính quy `[Tt]he` có nghĩa là: chữ hoa `T` hoặc chữ thường `t`, theo sau là chữ `h`, tiếp theo là chữ `e`.
+
+
+"[Tt]he" => The car parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/2ITLQ4/1)
+
+
+Tuy nhiên, khoảng thời gian bên trong một bộ ký tự có nghĩa là một khoảng thời gian theo nghĩa đen. Biểu thức chính quy `ar[.]` Có nghĩa là: ký tự chữ thường `a`, theo sau là chữ `r`, theo sau là kí tự `.` .
+
+
+"ar[.]" => A garage is a good place to park a car.
+
+
+[Test the regular expression](https://regex101.com/r/wL3xtE/1)
+
+### 2.2.1 Negated character set
+
+Nói chung, biểu tượng dấu mũ biểu thị sự bắt đầu của chuỗi, nhưng khi nó được gõ sau dấu ngoặc vuông mở, nó sẽ phủ định bộ ký tự. Ví dụ: biểu thức chính quy `[^ c]ar` có nghĩa là: bất kỳ ký tự nào ngoại trừ `c`, theo sau là ký tự `a`, theo sau là chữ `r`.
+
+
+"[^c]ar" => The car parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/nNNlq3/1)
+
+
+
+
+## 2.3 Repetitions
+
+Theo dõi các ký tự meta, `+`, `*` hoặc `?` được sử dụng để xác định số lần mô hình con (subpattern) có thể xảy ra. Những kí tự meta này hành động khác nhau trong các tình huống khác nhau.
+
+
+### 2.3.1 The Star
+
+Biểu tượng `*` khớp 0 hoặc nhiều lần lặp lại của trình so khớp trước. Biểu thức chính quy `a*` có nghĩa là: 0 hoặc nhiều lần lặp lại ký tự chữ thường trước `a`. Nhưng nếu nó xuất hiện sau một bộ ký tự hoặc lớp thì nó sẽ tìm thấy sự lặp lại của toàn bộ bộ ký tự. Ví dụ: biểu thức chính quy `[a-z]*` có nghĩa là: bất kỳ số lượng chữ cái viết thường trong một hàng.
+
+
+"[a-z]*" => The car parked in the garage #21.
+
+
+[Test the regular expression](https://regex101.com/r/7m8me5/1)
+
+Biểu tượng `*` có thể được sử dụng với ký tự meta. để khớp với bất kỳ chuỗi ký tự nào `.*` . Biểu tượng `*` có thể được sử dụng với ký tự khoảng trắng `\s` để khớp với một chuỗi các ký tự khoảng trắng.
+
+Ví dụ: biểu thức `\s*cat\s*` có nghĩa là: không hoặc nhiều khoảng trắng, theo sau là ký tự chữ thường `c`, theo sau là ký tự chữ thường `a`, theo sau là ký tự chữ thường `t`, tiếp theo là 0 hoặc nhiều khoảng trắng.
+
+
+
+"\s*cat\s*" => The fat cat sat on the concatenation.
+
+
+[Test the regular expression](https://regex101.com/r/gGrwuz/1)
+
+
+
+
+### 2.3.2 The Plus
+
+The symbol `+` matches one or more repetitions of the preceding character. For
+example, the regular expression `c.+t` means: lowercase letter `c`, followed by
+at least one character, followed by the lowercase character `t`. It needs to be
+clarified that `t` is the last `t` in the sentence.
+
+
+"c.+t" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/Dzf9Aa/1)
+
+### 2.3.3 The Question Mark
+
+Trong biểu thức chính quy các ký tự meta `?` làm cho ký tự trước là một tùy chọn. Biểu tượng này khớp với 0 hoặc một thể hiện (instance ) của ký tự trước. Ví dụ: biểu thức chính quy `[T]?he` có nghĩa là: Tùy chọn chữ hoa chữ `T`, theo sau là ký tự chữ thường `h`, tiếp theo là ký tự chữ thường `e`.
+
+
+"[T]he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/cIg9zm/1)
+
+
+"[T]?he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/kPpO2x/1)
+
+
+## 2.4 Braces
+
+
+Trong các dấu ngoặc nhọn thông thường còn được gọi là bộ định lượng được sử dụng để chỉ định số lần mà một ký tự hoặc một nhóm ký tự có thể được lặp lại. Ví dụ: biểu thức chính quy `[0-9]{2,3}` có nghĩa là: Ghép ít nhất 2 chữ số nhưng không quá 3 (ký tự trong phạm vi từ 0 đến 9).
+
+
+
+"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Test the regular expression](https://regex101.com/r/juM86s/1)
+
+
+Chúng ta có thể bỏ qua số thứ hai. Ví dụ: biểu thức chính quy `[0-9]{2,}` có nghĩa là: Ghép 2 chữ số trở lên. Nếu chúng tôi cũng xóa dấu phẩy, biểu thức chính quy `[0-9]{3}` có nghĩa là: Ghép chính xác 3 chữ số.
+
+
+"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Test the regular expression](https://regex101.com/r/Gdy4w5/1)
+
+
+"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
+
+
+[Test the regular expression](https://regex101.com/r/Sivu30/1)
+
+
+## 2.5 Capturing Group
+
+A capturing group is a group of sub-patterns that is written inside Parentheses
+`(...)`. Like As we discussed before that in regular expression if we put a quantifier
+after a character then it will repeat the preceding character. But if we put quantifier
+after a capturing group then it repeats the whole capturing group. For example,
+the regular expression `(ab)*` matches zero or more repetitions of the character
+"ab". We can also use the alternation `|` meta character inside capturing group.
+For example, the regular expression `(c|g|p)ar` means: lowercase character `c`,
+`g` or `p`, followed by character `a`, followed by character `r`.
+
+
+Một nhóm capturing là một nhóm các mẫu con được viết bên trong Dấu ngoặc đơn `(...)`. Giống như chúng ta đã thảo luận trước đó trong biểu thức chính quy nếu chúng ta đặt một bộ định lượng sau một ký tự thì nó sẽ lặp lại ký tự trước. Nhưng nếu chúng ta đặt bộ định lượng sau một nhóm capturing thì nó lặp lại toàn bộ nhóm capturing. Ví dụ: biểu thức chính quy `(ab)*` khớp với 0 hoặc nhiều lần lặp lại của ký tự "ab". Chúng ta cũng có thể sử dụng luân phiên `|` kí tự meta trong nhóm capturing. Ví dụ: biểu thức chính quy `(c|g|p)ar` có nghĩa là: ký tự chữ thường `c`, `g` hoặc `p`, theo sau là ký tự `a`, tiếp theo là ký tự `r`.
+
+
+
+
+"(c|g|p)ar" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/tUxrBG/1)
+
+Note that capturing groups do not only match but also capture the characters for use in
+the parent language. The parent language could be python or javascript or virtually any
+language that implements regular expressions in a function definition.
+
+
+Lưu ý rằng các nhóm capturing không chỉ khớp mà còn capturing các ký tự để sử dụng trong ngôn ngữ gốc. Ngôn ngữ gốc có thể là python hoặc javascript hoặc hầu như bất kỳ ngôn ngữ nào thực hiện các biểu thức chính quy trong định nghĩa hàm.
+
+
+### 2.5.1 Non-capturing group
+
+A non-capturing group is a capturing group that only matches the characters, but
+does not capture the group. A non-capturing group is denoted by a `?` followed by a `:`
+within parenthesis `(...)`. For example, the regular expression `(?:c|g|p)ar` is similar to
+`(c|g|p)ar` in that it matches the same characters but will not create a capture group.
+
+
+
+Nhóm không capturing là nhóm capturing chỉ khớp với các ký tự, nhưng không capturing được nhóm. Một nhóm không capturing được ký hiệu là `?` theo sau là `:` trong ngoặc đơn `(...)`.
+
+Ví dụ: biểu thức chính quy `(?:c|g|p)ar` tương tự như `(c|g|p)ar` ở chỗ nó khớp với các ký tự giống nhau nhưng sẽ không tạo nhóm capturing.
+
+
+"(?:c|g|p)ar" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/Rm7Me8/1)
+
+Các nhóm không capturing có thể có ích khi được sử dụng trong chức năng tìm và thay thế hoặc khi trộn với các nhóm capturing để giữ tổng quan khi sản xuất bất kỳ loại đầu ra nào khác. Xem thêm [4. Lookaround](#4-lookaround).
+
+
+## 2.6 Alternation
+
+Trong một biểu thức chính quy, thanh dọc `|` được sử dụng để xác định xen kẽ. Sự xen kẽ giống như một câu lệnh OR giữa nhiều biểu thức. Bây giờ, bạn có thể nghĩ rằng bộ ký tự và luân phiên hoạt động theo cùng một cách. Nhưng sự khác biệt lớn giữa bộ ký tự và xen kẽ là bộ ký tự hoạt động ở cấp độ ký tự nhưng xen kẽ hoạt động ở cấp độ biểu thức.
+
+Ví dụ: biểu thức chính quy `(T|t)he|car` có nghĩa là: hoặc (ký tự chữ `T` hoặc chữ thường `t`, theo sau là ký tự chữ thường `h`, tiếp theo là ký tự chữ thường `e`) OR (ký tự chữ thường `c`, tiếp theo là ký tự chữ thường `a`, theo sau bằng ký tự viết thường `r`). Lưu ý rằng tôi đặt dấu ngoặc đơn cho rõ ràng, để cho thấy rằng một trong hai biểu thức trong ngoặc đơn có thể được đáp ứng và nó sẽ khớp.
+
+
+"(T|t)he|car" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/fBXyX0/1)
+
+## 2.7 Escaping special character
+
+Backslash `\` is used in regular expression to escape the next character. This
+allows us to specify a symbol as a matching character including reserved
+characters `{ } [ ] / \ + * . $ ^ | ?`. To use a special character as a matching
+character prepend `\` before it.
+
+For example, the regular expression `.` is used to match any character except
+newline. Now to match `.` in an input string the regular expression
+`(f|c|m)at\.?` means: lowercase letter `f`, `c` or `m`, followed by lowercase
+character `a`, followed by lowercase letter `t`, followed by optional `.`
+character.
+
+
+Dấu gạch chéo ngược `\` được sử dụng trong biểu thức chính quy để thoát ký tự tiếp theo. Điều này cho phép chúng tôi chỉ định một biểu tượng là một ký tự phù hợp bao gồm các ký tự dành riêng `{} [] / \ *. $ ^ | ?` . Để sử dụng một ký tự đặc biệt, ta dùng `\` làm ký tự trùng khớp trước kí tự ta muốn dùng.
+
+Ví dụ, biểu thức chính quy `.` được sử dụng để khớp với bất kỳ ký tự nào ngoại trừ dòng mới. Bây giờ để phù hợp `.` trong một chuỗi đầu vào, biểu thức chính quy `(f|c|m)at\.?` có nghĩa là: chữ thường `f`, `c` hoặc `m`, theo sau là ký tự chữ thường `a`, tiếp theo là chữ thường chữ `t`, theo sau là tùy chọn `.` tính cách.
+
+
+
+"(f|c|m)at\.?" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/DOc5Nu/1)
+
+
+## 2.8 Anchors
+
+
+Trong các biểu thức chính quy, chúng tôi sử dụng các anchors để kiểm tra xem biểu tượng phù hợp là biểu tượng bắt đầu hay biểu tượng kết thúc của chuỗi đầu vào. Các anchors có hai loại: Loại thứ nhất là Caret `^` kiểm tra xem ký tự khớp có phải là ký tự bắt đầu của đầu vào không và loại thứ hai là Dollar `$` kiểm tra xem ký tự khớp có phải là ký tự cuối cùng của chuỗi đầu vào không.
+
+
+
+
+### 2.8.1 Caret
+
+
+Biểu tượng Caret `^` được sử dụng để kiểm tra xem ký tự khớp có phải là ký tự đầu tiên của chuỗi đầu vào không. Nếu chúng ta áp dụng biểu thức chính quy sau `^a` ( nếu a là ký hiệu bắt đầu) cho chuỗi đầu vào `abc` thì nó khớp với `a`. Nhưng nếu chúng ta áp dụng biểu thức chính quy `^b` trên chuỗi đầu vào ở trên thì nó không khớp với bất cứ thứ gì. Bởi vì trong chuỗi đầu vào `abc` "b" không phải là ký hiệu bắt đầu. Chúng ta hãy xem một biểu thức chính quy khác `^(T|t)he` có nghĩa là: ký tự chữ hoa `T` hoặc ký tự chữ thường `t` là ký hiệu bắt đầu của chuỗi đầu vào, tiếp theo là ký tự chữ thường `h`, tiếp theo là ký tự chữ thường `e`.
+
+
+
+"(T|t)he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/5ljjgB/1)
+
+
+"^(T|t)he" => The car is parked in the garage.
+
+
+[Test the regular expression](https://regex101.com/r/jXrKne/1)
+
+### 2.8.2 Dollar
+
+
+Biểu tượng Dollar `$` được sử dụng để kiểm tra xem ký tự khớp có phải là ký tự cuối cùng của chuỗi đầu vào không. Ví dụ: biểu thức chính quy `(at\.)$` có nghĩa là: ký tự chữ thường `a`, theo sau là ký tự chữ thường `t`, theo sau là `.` ký tự và bộ so khớp phải là cuối chuỗi.
+
+
+
+
+"(at\.)" => The fat cat. sat. on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/y4Au4D/1)
+
+
+"(at\.)$" => The fat cat. sat. on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/t0AkOd/1)
+
+## 3. Shorthand Character Sets
+
+
+
+Biểu thức chính quy cung cấp các shorthand cho các bộ ký tự thường được sử dụng, cung cấp các shorthand thuận tiện cho các biểu thức thông thường được sử dụng. Các bộ ký tự shorthand như sau:
+
+
+|Shorthand|Description|
+|:----:|----|
+|.| Bất kỳ kí tự nào ngoại trừ dòng mới|
+|\w|Khớp các ký tự chữ và số: `[a-zA-Z0-9_]`|
+|\W|Khớp các ký tự không phải chữ và số: `[^\w]`|
+|\d|khớp với số trong khoảng: `[0-9]`|
+|\D|Khớp không có chữ số: `[^\d]`|
+|\s|Khớp các ký tự khoảng trắng: `[\t\n\f\r\p{Z}]`|
+|\S|Khớp với ký tự không phải khoảng trắng: `[^\s]`|
+
+## 4. Lookaround
+
+Lookbehind và lookahead (còn được gọi là lookaround) là các loại nhóm ***không capturing*** cụ thể (Được sử dụng để khớp với mẫu nhưng không được bao gồm trong danh sách phù hợp). `Lookarounds` sử dụng khi chúng ta có điều kiện mẫu này được đi trước hoặc theo sau bởi một mẫu khác.
+
+Ví dụ: chúng tôi muốn nhận tất cả các số có trước ký tự `$` từ chuỗi đầu vào sau `$4,44 và $10,88`. Chúng tôi sẽ sử dụng biểu thức chính quy sau `(?<=\$)[0-9\.]*` có nghĩa là: lấy tất cả các số có chứa `.` ký tự và đứng trước ký tự `$`. Sau đây là những cái nhìn được sử dụng trong các biểu thức thông thường:
+
+|Kí hiệu|Mô tả|
+|:----:|----|
+|?=|Positive Lookahead|
+|?!|Negative Lookahead|
+|?<=|Positive Lookbehind|
+|?
+"(T|t)he(?=\sfat)" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/IDDARt/1)
+
+### 4.2 Negative Lookahead
+
+Negative lookahead is used when we need to get all matches from input string
+that are not followed by a pattern. Negative lookahead is defined same as we define
+positive lookahead but the only difference is instead of equal `=` character we
+use negation `!` character i.e. `(?!...)`. Let's take a look at the following
+regular expression `(T|t)he(?!\sfat)` which means: get all `The` or `the` words
+from input string that are not followed by the word `fat` precedes by a space
+character.
+
+
+
+
+
+
+`Negative lookahead` được sử dụng khi chúng ta cần lấy tất cả các kết quả khớp từ chuỗi đầu vào không được theo sau bởi một mẫu. `Negative lookahead` được định nghĩa giống như chúng ta định nghĩa `positive lookahead` nhưng sự khác biệt duy nhất là thay vì bằng ký tự `=` chúng ta sử dụng kí tự phủ định `!` tức là `(?! ...)`.
+
+Chúng ta hãy xem biểu thức chính quy sau đây: `(T|t)he(?!\sfat)` có nghĩa là: lấy tất cả các từ `The` hoặc `the` từ chuỗi đầu vào không được đứng trước bởi từ `fat` trước một ký tự khoảng trắng.
+
+
+"(T|t)he(?!\sfat)" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/V32Npg/1)
+
+### 4.3 Positive Lookbehind
+
+`Positive lookbehind` được sử dụng để có được tất cả mẫu khớp cái mà theo sau bởi một mẫu cụ thể. `Positive lookbehind` được biểu thị bởi `(?<=...)`.
+
+Ví dụ: biểu thức chính quy `(?<=(T|t)he\s)(fat|mat)` có nghĩa là: lấy tất cả các từ `fat` hoặc `mat` từ chuỗi đầu vào, cái mà sau từ `The` hoặc `the`.
+
+
+
+
+"(?<=(T|t)he\s)(fat|mat)" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/avH165/1)
+
+### 4.4 Negative Lookbehind
+
+
+`Negative lookbehind` được sử dụng để có được tất cả các từ khớp không có trước một mẫu cụ thể. `Negative lookbehind` được ký hiệu là `(?
+"(?<!(T|t)he\s)(cat)" => The cat sat on cat.
+
+
+[Test the regular expression](https://regex101.com/r/8Efx5G/1)
+
+## 5. Flags
+
+Flags are also called modifiers because they modify the output of a regular
+expression. These flags can be used in any order or combination, and are an
+integral part of the RegExp.
+
+
+Cờ (flags) cũng được gọi là bổ nghĩa (modifiers) vì chúng sửa đổi đầu ra của biểu thức chính quy. Các cờ này có thể được sử dụng theo bất kỳ thứ tự hoặc kết hợp nào và là một phần không thể thiếu của RegExp.
+
+
+
+|Cờ|Mô tả|
+|:------:|----|
+|i|Case insensitive: Đặt khớp với mẫu không phân biệt chữ hoa chữ thường.|
+|g|Global Search: Tìm kiếm một mẫu trong suốt chuỗi đầu vào.|
+|m|Multiline: ký tự Anchor meta hoạt động trên mỗi dòng.|
+
+### 5.1 Case Insensitive
+
+The `i` modifier is used to perform case-insensitive matching. For example, the
+regular expression `/The/gi` means: uppercase letter `T`, followed by lowercase
+character `h`, followed by character `e`. And at the end of regular expression
+the `i` flag tells the regular expression engine to ignore the case. As you can
+see we also provided `g` flag because we want to search for the pattern in the
+whole input string.
+
+
+
+Công cụ sửa đổi `i` được sử dụng để thực hiện khớp không phân biệt chữ hoa chữ thường.
+
+Ví dụ: biểu thức chính quy `/The/gi` có nghĩa là: chữ hoa chữ `T`, theo sau là ký tự chữ thường `h`, tiếp theo là ký tự `e`. Và ở cuối biểu thức chính quy, cờ `i` báo cho công cụ biểu thức chính quy bỏ qua trường hợp này. Như bạn có thể thấy, chúng tôi cũng đã cung cấp cờ `g` vì chúng tôi muốn tìm kiếm mẫu trong toàn bộ chuỗi đầu vào.
+
+
+"The" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/dpQyf9/1)
+
+
+"/The/gi" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/ahfiuh/1)
+
+### 5.2 Global search
+
+
+Công cụ sửa đổi `g` được sử dụng để thực hiện khớp toàn cầu (tìm tất cả các từ có thể khớp thay vì dừng sau lần khớp đầu tiên).
+
+Ví dụ: biểu thức chính quy `/.(at)/g` có nghĩa là: bất kỳ ký tự nào ngoại trừ dòng mới, theo sau là ký tự chữ thường `a`, tiếp theo là ký tự chữ thường `t`. Vì chúng tôi đã cung cấp cờ `g` ở cuối biểu thức chính quy nên bây giờ nó sẽ tìm thấy tất cả các kết quả khớp trong chuỗi đầu vào, không chỉ là đầu tiên (là hành vi mặc định).
+
+
+"/.(at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/jnk6gM/1)
+
+
+"/.(at)/g" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/dO1nef/1)
+
+### 5.3 Multiline
+
+
+Công cụ sửa đổi `m` được sử dụng để thực hiện khớp nhiều dòng. Như chúng ta đã thảo luận về các anchors `(^, $)` trước đó, được sử dụng để kiểm tra xem mẫu là phần đầu của phần đầu vào hay phần cuối của chuỗi đầu vào. Nhưng nếu chúng ta muốn các anchors hoạt động trên mỗi dòng, chúng ta sử dụng cờ `m`.
+
+Ví dụ: biểu thức chính quy `/at(.)?$/gm` có nghĩa là: ký tự chữ thường `a`, theo sau là ký tự chữ thường `t`, tùy chọn mọi thứ trừ dòng mới. Và vì cờ `m` bây giờ công cụ biểu thức chính quy khớp với mẫu ở cuối mỗi dòng trong một chuỗi.
+
+
+
+"/.at(.)?$/" => The fat
+ cat sat
+ on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/hoGMkP/1)
+
+
+"/.at(.)?$/gm" => The fat
+ cat sat
+ on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/E88WE2/1)
+
+
+
+
+## 6. Greedy vs lazy matching
+By default regex will do greedy matching , means it will match as long as
+possible. we can use `?` to match in lazy way means as short as possible
+
+
+Theo mặc định, regex sẽ thực hiện greedy matching, có nghĩa là nó sẽ khớp càng lâu càng tốt. chúng ta có thể sử dụng `?` để khớp theo cách lười biếng có nghĩa là càng ngắn càng tốt
+
+
+
+
+
+"/(.*at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/AyAdgJ/1)
+
+
+"/(.*?at)/" => The fat cat sat on the mat.
+
+
+[Test the regular expression](https://regex101.com/r/AyAdgJ/2)
+
+
+## Contribution
+
+* Open pull request with improvements
+* Discuss ideas in issues
+* Spread the word
+* Reach out with any feedback [](https://twitter.com/ziishaned)
+
+## License
+
+MIT © [Zeeshan Ahmad](https://twitter.com/ziishaned)
+
+
+
+
+
+
From 182e2afbbeed976e2d5622314c24ff465013fa1d Mon Sep 17 00:00:00 2001
From: ImKifu
Date: Tue, 6 Aug 2019 09:00:14 +0700
Subject: [PATCH 066/162] add vietnamese
---
translations/README-vn.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/translations/README-vn.md b/translations/README-vn.md
index e2e3918c..86cf6326 100644
--- a/translations/README-vn.md
+++ b/translations/README-vn.md
@@ -42,11 +42,14 @@ Biểu thức chính quy là một khuôn mẫu được khớp với chuỗi c
Hãy tưởng tượng bạn đang viết một ứng dụng và bạn muốn đặt quy tắc khi người dùng chọn tên người dùng của họ. Chúng tôi muốn cho phép tên người dùng chứa các chữ cái, số, dấu gạch dưới và dấu gạch nối. Chúng tôi cũng muốn giới hạn số lượng ký tự trong tên người dùng để nó trông không xấu. Chúng tôi sử dụng biểu thức chính quy sau để xác thực tên người dùng:
+
+
+
Trên biểu thức chính quy có thể chấp nhận các chuỗi `john_doe`, `jo-hn_doe` và `john12_as`. Nó không khớp với `Jo` vì chuỗi đó chứa chữ hoa và nó quá ngắn.
## Table of Contents
From e7498c48de52e8f22c666523b2bca0b5df9d8fba Mon Sep 17 00:00:00 2001
From: ImKifu
Date: Tue, 6 Aug 2019 09:01:39 +0700
Subject: [PATCH 067/162] add vietnamese
---
translations/README-vn.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/README-vn.md b/translations/README-vn.md
index 86cf6326..7b0b43c4 100644
--- a/translations/README-vn.md
+++ b/translations/README-vn.md
@@ -45,7 +45,7 @@ Hãy tưởng tượng bạn đang viết một ứng dụng và bạn muốn đ
-
+
From bfb63e9b75cd6e2761e9464a3882e02fdecfcf6d Mon Sep 17 00:00:00 2001
From: ImKifu
Date: Tue, 6 Aug 2019 09:07:10 +0700
Subject: [PATCH 068/162] add vietnamese
---
translations/README-vn.md | 71 +++------------------------------------
1 file changed, 5 insertions(+), 66 deletions(-)
diff --git a/translations/README-vn.md b/translations/README-vn.md
index 7b0b43c4..6ca8470d 100644
--- a/translations/README-vn.md
+++ b/translations/README-vn.md
@@ -85,10 +85,6 @@ Trên biểu thức chính quy có thể chấp nhận các chuỗi `john_doe`,
## 1. Basic Matchers
-A regular expression is just a pattern of characters that we use to perform
-search in a text. For example, the regular expression `the` means: the letter
-`t`, followed by the letter `h`, followed by the letter `e`.
-
Biểu thức chính quy chỉ là một mẫu các ký tự mà chúng ta sử dụng để thực hiện tìm kiếm trong văn bản. Ví dụ, biểu thức chính quy `the` có nghĩa là: chữ `t`, tiếp theo là chữ `h`, tiếp theo là chữ `e`.
@@ -204,10 +200,11 @@ Ví dụ: biểu thức `\s*cat\s*` có nghĩa là: không hoặc nhiều khoả
### 2.3.2 The Plus
-The symbol `+` matches one or more repetitions of the preceding character. For
-example, the regular expression `c.+t` means: lowercase letter `c`, followed by
-at least one character, followed by the lowercase character `t`. It needs to be
-clarified that `t` is the last `t` in the sentence.
+
+Biểu tượng `+` khớp với một hoặc nhiều lần lặp lại của ký tự trước.
+
+Ví dụ: biểu thức chính quy `c.+t` có nghĩa là: chữ thường chữ `c`, theo sau là ít nhất một ký tự, tiếp theo là ký tự chữ thường `t`. Nó cần phải được làm rõ rằng `t` là `t` cuối cùng trong câu.
+
"c.+t" => The fat cat sat on the mat.
@@ -262,16 +259,6 @@ Chúng ta có thể bỏ qua số thứ hai. Ví dụ: biểu thức chính quy
## 2.5 Capturing Group
-A capturing group is a group of sub-patterns that is written inside Parentheses
-`(...)`. Like As we discussed before that in regular expression if we put a quantifier
-after a character then it will repeat the preceding character. But if we put quantifier
-after a capturing group then it repeats the whole capturing group. For example,
-the regular expression `(ab)*` matches zero or more repetitions of the character
-"ab". We can also use the alternation `|` meta character inside capturing group.
-For example, the regular expression `(c|g|p)ar` means: lowercase character `c`,
-`g` or `p`, followed by character `a`, followed by character `r`.
-
-
Một nhóm capturing là một nhóm các mẫu con được viết bên trong Dấu ngoặc đơn `(...)`. Giống như chúng ta đã thảo luận trước đó trong biểu thức chính quy nếu chúng ta đặt một bộ định lượng sau một ký tự thì nó sẽ lặp lại ký tự trước. Nhưng nếu chúng ta đặt bộ định lượng sau một nhóm capturing thì nó lặp lại toàn bộ nhóm capturing. Ví dụ: biểu thức chính quy `(ab)*` khớp với 0 hoặc nhiều lần lặp lại của ký tự "ab". Chúng ta cũng có thể sử dụng luân phiên `|` kí tự meta trong nhóm capturing. Ví dụ: biểu thức chính quy `(c|g|p)ar` có nghĩa là: ký tự chữ thường `c`, `g` hoặc `p`, theo sau là ký tự `a`, tiếp theo là ký tự `r`.
@@ -282,23 +269,12 @@ Một nhóm capturing là một nhóm các mẫu con được viết bên trong
[Test the regular expression](https://regex101.com/r/tUxrBG/1)
-Note that capturing groups do not only match but also capture the characters for use in
-the parent language. The parent language could be python or javascript or virtually any
-language that implements regular expressions in a function definition.
-
Lưu ý rằng các nhóm capturing không chỉ khớp mà còn capturing các ký tự để sử dụng trong ngôn ngữ gốc. Ngôn ngữ gốc có thể là python hoặc javascript hoặc hầu như bất kỳ ngôn ngữ nào thực hiện các biểu thức chính quy trong định nghĩa hàm.
### 2.5.1 Non-capturing group
-A non-capturing group is a capturing group that only matches the characters, but
-does not capture the group. A non-capturing group is denoted by a `?` followed by a `:`
-within parenthesis `(...)`. For example, the regular expression `(?:c|g|p)ar` is similar to
-`(c|g|p)ar` in that it matches the same characters but will not create a capture group.
-
-
-
Nhóm không capturing là nhóm capturing chỉ khớp với các ký tự, nhưng không capturing được nhóm. Một nhóm không capturing được ký hiệu là `?` theo sau là `:` trong ngoặc đơn `(...)`.
Ví dụ: biểu thức chính quy `(?:c|g|p)ar` tương tự như `(c|g|p)ar` ở chỗ nó khớp với các ký tự giống nhau nhưng sẽ không tạo nhóm capturing.
@@ -326,17 +302,6 @@ Ví dụ: biểu thức chính quy `(T|t)he|car` có nghĩa là: hoặc (ký t
## 2.7 Escaping special character
-Backslash `\` is used in regular expression to escape the next character. This
-allows us to specify a symbol as a matching character including reserved
-characters `{ } [ ] / \ + * . $ ^ | ?`. To use a special character as a matching
-character prepend `\` before it.
-
-For example, the regular expression `.` is used to match any character except
-newline. Now to match `.` in an input string the regular expression
-`(f|c|m)at\.?` means: lowercase letter `f`, `c` or `m`, followed by lowercase
-character `a`, followed by lowercase letter `t`, followed by optional `.`
-character.
-
Dấu gạch chéo ngược `\` được sử dụng trong biểu thức chính quy để thoát ký tự tiếp theo. Điều này cho phép chúng tôi chỉ định một biểu tượng là một ký tự phù hợp bao gồm các ký tự dành riêng `{} [] / \ *. $ ^ | ?` . Để sử dụng một ký tự đặc biệt, ta dùng `\` làm ký tự trùng khớp trước kí tự ta muốn dùng.
@@ -441,18 +406,6 @@ Ví dụ: biểu thức chính quy `(T|t)he(?=\Sfat)` có nghĩa là: tùy ý kh
### 4.2 Negative Lookahead
-Negative lookahead is used when we need to get all matches from input string
-that are not followed by a pattern. Negative lookahead is defined same as we define
-positive lookahead but the only difference is instead of equal `=` character we
-use negation `!` character i.e. `(?!...)`. Let's take a look at the following
-regular expression `(T|t)he(?!\sfat)` which means: get all `The` or `the` words
-from input string that are not followed by the word `fat` precedes by a space
-character.
-
-
-
-
-
`Negative lookahead` được sử dụng khi chúng ta cần lấy tất cả các kết quả khớp từ chuỗi đầu vào không được theo sau bởi một mẫu. `Negative lookahead` được định nghĩa giống như chúng ta định nghĩa `positive lookahead` nhưng sự khác biệt duy nhất là thay vì bằng ký tự `=` chúng ta sử dụng kí tự phủ định `!` tức là `(?! ...)`.
@@ -493,10 +446,6 @@ Ví dụ: biểu thức chính quy `(?
Date: Wed, 7 Aug 2019 12:37:06 +0300
Subject: [PATCH 069/162] Update Turkish Translations
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Ogün Karakuş
---
translations/README-tr.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/translations/README-tr.md b/translations/README-tr.md
index 094456d0..0195d255 100644
--- a/translations/README-tr.md
+++ b/translations/README-tr.md
@@ -552,7 +552,7 @@ için `g` işaretini ayrıca belirtiyoruz.
"/.(at)/" => The fat cat sat on the mat.
-[Test the regular expression](https://regex101.com/r/jnk6gM/1)
+[Düzenli ifadeyi test edin](https://regex101.com/r/jnk6gM/1)
"/.(at)/g" => The fat cat sat on the mat.
From 7907bf7a879ea43015a9d81cd7ef4e0c7ae5e57e Mon Sep 17 00:00:00 2001
From: Kevin Pallikunnel
Date: Fri, 9 Aug 2019 09:34:13 -0500
Subject: [PATCH 070/162] fixed image with spelling error
---
img/regexp-en.png | Bin 32399 -> 26931 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/img/regexp-en.png b/img/regexp-en.png
index c38c90fb009dd72770ec7c32f5323ed968b5b07e..46b1a0b93ca7c036b10a4f2a7fd9a2a5a591fdea 100644
GIT binary patch
literal 26931
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