From 7b00db73fc8b0bdafcf129ab15428f7acb34d485 Mon Sep 17 00:00:00 2001 From: Caleb Mazalevskis Date: Wed, 18 Oct 2017 13:32:47 +0800 Subject: [PATCH 1/2] 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 add4168..de8d14f 100644 --- a/README-cn.md +++ b/README-cn.md @@ -3,36 +3,37 @@ Learn Regex


-## 翻译: +## 翻译: * [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”。 +正则表达式可以从一个基础字符串中根据一定的匹配模式替换文本中的字符串、验证表单、提取字符串等等。 -想象你正在写一个应用, 然后你想设定一个用户命名的规则, 让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑. -我们使用以下正则表达式来验证一个用户名: +想象你正在写一个应用,然后你想设定一个用户命名的规则,让用户名包含字符,数字,下划线和连字符,以及限制字符的个数,好让名字看起来没那么丑。 +我们使用以下正则表达式来验证一个用户名:

Regular expression

-以上的正则表达式可以接受 `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 48d54da..41ec2bd 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 6e7c65d..8bd28b5 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 8fb7da2..1fed229 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 126cde8..aa3693f 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 @@
   Regular expression
 

-この正規表現によって `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 7d0097e..56d59b1 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 de90728..9c57b17 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 956e85e..f066ba9 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 4e1a6f3..e35e3ff 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 e3945a4cbcdf68baf8f6a734642ed3ca4f55e7be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ja=CC=81nos=20Orcsik?= 
Date: Tue, 30 Jun 2020 00:16:07 +0200
Subject: [PATCH 2/2] fix typo

---
 README.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 1428d17..55da5ce 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,7 @@
 * [Tiếng Việt](translations/README-vn.md)
 * [فارسی](translations/README-fa.md)
 
-## What are Regular Expressions?
+## What is Regular Expression?
 
 > A regular expression is a group of characters or symbols which is used to find a specific pattern in a text.
 
@@ -280,7 +280,7 @@ regular expression `[0-9]{3}` means: Match exactly 3 digits.
 
 ## 2.5 Capturing Groups
 
-A capturing group is a group of sub-patterns that is written inside parentheses 
+A capturing group is a group of subpatterns that is written inside parentheses 
 `(...)`. As discussed before, in regular expressions, if we put a quantifier 
 after a character then it will repeat the preceding character. But if we put a quantifier
 after a capturing group then it repeats the whole capturing group. For example,
@@ -356,7 +356,7 @@ character.
 
 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:
-The first type is the caret `^` that check if the matching character is the first
+The first type is the caret `^` that checks if the matching character is the first
 character of the input and the second type is the dollar sign `$` which checks if a matching
 character is the last character of the input string.