正则表达式完全指南
每个人都在谈论正则表达式,但是每个人都讨厌正则表达式,但最终还是使用了正则表达式!
那么什么是正则表达式? 嗯,我们需要更深入吗? 是的,让我们简短介绍一下正则表达式的组成部分。
正则表达式:
正则表达式或有理表达式本身就是对象,并且描述字符的模式。 它使我们能够搜索特定的文本模式,还有助于匹配,定位和管理文本。 尽管它们看起来很复杂,但是功能非常强大,但是您绝对可以为几乎任何您认为的文本模式创建一个正则表达式。
正则表达式的基本组成部分:
元字符是正则表达式的基础。 正则表达式中的字符应理解为具有特殊含义的元字符或具有文字含义的常规字符。
保留的元字符:
保留并需要转义的元字符:
.[{()\^$|?*+
我们稍后会看到逃跑的例子。
其他常见的元字符是:
脱字号(^):
(^)
匹配字符串的开头,并且在多行模式下还匹配每个换行符之后的字符串。
例:
^\d{3 } will match with patterns like "456" in "456-112-112" .
美元($):
($)
匹配字符串的末尾或在字符串末尾的换行符之前,并且在多行模式下也匹配换行符的前面。
例:
\d{3 }$ will match with patterns like "112" in "456-112-112" .
\ d:
\d
匹配整数或数字(0–9)
。 \d
的数字确定了我们的正则表达式将匹配的数字的位数。 即, \d
表示一位数字\d\d = double digits
,依此类推。
例:
\d\d\d
将匹配327 , 123, 787 but not 1223
匹配327 , 123, 787 but not 1223
因为“ 1223”中有4位数字,而我们的正则表达式是3位数字的匹配项。
\d =1
\d\d = 12
\d\d\d ≠ 473847
因为它返回3位数字,但473847
包含6位数字。
\d\d\d ≠ cat
因为它将仅匹配数字,但cat包含字母。
\ D:
反向\d
。 匹配除数字外的任何内容。
例:
\D\D = AB
\D\D = xy
\D\D ≠ 12
因为它与数字字符不匹配。
\ w:
匹配任何字母数字(单词)字符。
例:
\w\w\w = 467
\w\w\w\w = Crow
\w\w\w ≠ python
\w\w\w
不返回python,因为python包含6个字符。
\ W:
与\ D相似\ W与\ wi,e相反:匹配字母数字字符以外的任何字符
例:
\W\W = ,, or !! or @#
\W\W\W = !@#
\W\W\W\W != Titanic2
因为每个字符都是字母数字。
/ s :
匹配任何空格字符,例如空格和制表符。
例如,在上例example_text中,正则表达式\s
仅匹配两个单词之间的空格,而忽略其他所有内容。
/ S :
匹配所有与\s
不同的非空白字符
中继器( *, + and { }
):
*, + and { }
之所以称为中继器,是因为它们表示前一个字符将被使用多次。
星号(*):
当*
前面的字符匹配0次或更多次时,星号匹配。 即:告诉计算机将前面的字符(或一组字符)匹配0次或更多次(最多无限次)。
例:
Gre*n = Green(e is found 2 times), Grn(e is found 0 time), Greeeeen (e is found 5 times)
,依此类推..
tre* != trees
因为存在“ s”,后跟“ ee”。
加号(+):
当'+'
前面的字符至少匹配一次或多次(最多无限次(+)
时, (+)
符号匹配。
例如 :
Gre+n = Green, Greeeen, Gren
等。
Gre+n != Grn
此处没有Gre+n != Grn
因为“ e”。
点(。):
句点与任何字母数字字符或符号匹配。 有趣的是,它可以代替任何其他符号,因此被称为通配符 。
例:
Gre. = Gree, Gren, Gre1
Gre. = Gree, Gren, Gre1
等
Gre. != Green
Gre. != Green
为。 本身仅匹配单个字符,在此是该词的第4个位置。 n是第5个字符,在RegEx中未考虑。
但是Gre.*
会匹配绿色,因为它告诉您可以匹配任何字符
使用了多次。
交替(|):
允许替代比赛。 | 就像布尔或一样。
例:
A|B
创建将匹配A or B
的正则表达式
H(i!|ey!)
将与Hi! or Hey!
匹配Hi! or Hey!
Hi! or Hey!
M(s|r|rs)\.?\s[AZ]\w+
将匹配以Ms, Mr or Mrs
开头的任何名称。
问号(?):
当前面的字符匹配吗? 仅出现0或1次,使字符匹配为可选。
例:
Favou?rite = Favourite
(发现1次)
Favou?rite = Favorite
(找到0次)
字符集 ([]):
[]
用于指示一组字符。 在一组中: [cat]
将匹配'c', 'a', or 't'
。 字符范围可以通过指定两个字符并用'-'
隔开来表示 例如 :
[AZ]
将匹配任何大写ASCII字母, [0–9]
将匹配0 to 9
任何数字。 [0-3][0-3]
将匹配所有从00 to 33
的两位数字 [0-9A-Fa-f]
将匹配任何十六进制数字。 [A\-Z])
或者将其放置为第一个或最后一个字符(例如[A-])
,则它将匹配文字'-'。 [(+*)]
将匹配任何文字字符'(', '+', '*', or ')'
[()[\]{}]
和[]()[{}]
都将匹配括号。 字符组():
一个人物 组由()表示,以完全相同的顺序匹配字符。
例:
(abc) = abc
不是acb
(123) = 123
而不是321
https?://(www\.)?(\w+)(\.\w+)
将匹配任何网址。 这里有3组。
第一组:可选的www.
第二组:域名google, facebook
等
第三组:顶级域名.com, .net, .org
还有一种隐性组组0组0的一切,我们在我们的情况下,整个拍摄的url
。
量词:
正则表达式使用量词指示搜索字符串的范围。 我们可以在搜索字符串中使用多个量词。 量词是:
{n}:
当前一个字符或字符组恰好出现n次时匹配。
例:
\d{3}=123
pand[ora]{2} = pandar, pandoo
pand[ora]{2} ≠ pandora
因为量词{2}
仅允许字符集[ora]
2个字母。
{n,m}:
当前一个字符或字符组出现至少n次且最多出现m次时匹配。
例如 :
\d{2,6} = 430973, 4303, 38238
\d{2, 6} ≠ 3
3不匹配,因为它是1位数字,因此超出了字符范围。
转义元字符:
要搜索作为保留的元字符的字符( 。[{{)\ ^ $ |?* +的任何一个 ),我们可以使用反斜杠\对该字符进行转义以使其能够被识别。
例:
正则表达式下方将匹配任何有效的邮件ID。 在这里,我们使用\来转义保留字符。
^([a-zA-Z0–9_\-\.]+)@([a-zA-Z0–9_\-\.]+)\.([a-zA-Z]{2,5})$
恭喜你! 现在您知道了正则表达式的基本知识,一天已经太多了!
在我即将发表的文章中,我们将使用python练习正则表达式。
翻译自: https://hackernoon.com/a-programmers-guide-to-regex-or-regular-expressions-0daw30be
正则表达式完全指南