正则表达式是网站开发者或者网站设计师用来搜索文本中某些模式的模式匹配标记。正则表达式可以搜索几乎任何东西,具体取决于你如何构造它们; 它们在网站设计和web开发中大量使用,是不可或缺的技能,因为它们对于帮助计算机快速排序数据并滤除可能导致错误的无意义非常有价值。
正则表达式看起来很可怕,特别是对于非程序员。看看这个:
[A-ZA-Z0-9 _ + - 。] + @ [A-ZA-Z0-9 _-] + \ [A-ZA-Z0-9 _.-] +
实际上,它实际上并没有那么糟糕; 那个匹配电子邮件地址。正如您将看到的,表达式可以分解为单个字符,所有这些字符都告诉程序要查找的内容。
正则表达式几乎是通用的。相同的一般语法适用于所有语言,此处和那里只有轻微的变化。本指南包含Python和JavaScript以及普通旧正则表达式的示例。如果您使用其他语言,请不要担心。几乎所有东西都适用于您选择的语言。
从技术上讲,没有很多东西不能被认为是正则表达式,因为文本字符串非常简单。如果您使用'abcde'作为正则表达式,编程语言将搜索该确切的字符串。
要看的第一个更动态的匹配字符是'。' 字符。在此上下文中,点字符是通配符。如果您正在搜索它,您的程序将返回它找到的任何匹配字符。
那么,如果你想寻找一个文字点怎么办?这也不难。如果要使用文字句点,请在其前面添加反斜杠,如下所示:'\。'
不过,反斜杠在这里扮演了更多角色。大多数主要的正则表达式字符包括反斜杠。
正则表达式数字
在Python中使用正则表达式查找数字。
看一些例子:
\ d:从0到9的数字
\ w:“单词字符”字母,数字和下划线
\ s:空格字符,包括制表符,换行符和常规空格
如果您使用大写字母而不是其中任何一个,那么您将得到相反的结果。例如,'\ D'为您提供除数字之外的所有内容。
反斜杠字符很好用户,但它们仍然有点僵硬。通常,您要匹配字母,数字或一些特殊字符。
使用正则表达式类在Python中查找字母。将要匹配的字符放在一对方括号“[]”中,您的程序将匹配其中任何一个。这称为正则表达式类。
[ABCD1234]
上面的例子效率仍然很低。相反,您可以使用短划线指定范围; 例如,所有小写字母:
[AZ]
您也可以列出范围。以下表达式匹配所有字母和数字:
[A-ZA-Z0-9]
如果您要在字符集中包含短划线,请在最后添加它以防止对其进行评估。它也适用于其他特殊字符。
[A-ZA-Z0-9 _ + - 。]
与反斜杠字符一样,您也可以在此处得到相反的结果。在课程开头放置一个“^”,将其从结果中排除。这将从结果中排除数字和几个特殊字符:
[^ 0-9 _ + .-]
组使用一组括号来分隔表达式。他们对数据进行分组,允许您的程序定位并使用它。当程序从Web地址中剥离“http://”时,它正在使用正则表达式组来完成该操作。正则表达式允许它以某些标准为目标,并且组允许它将各个部分分开。
正则表达式组帮助在JavaScript中查找URL。
组还允许您在一种模式或另一种模式之间进行选择 他们雇用一个'|' 在表达中充当“或”。下面的表达式将匹配以下任何一个:.com,.org,.net,.edu或.gov。
量词正是他们听起来的样子。他们告诉表达你正在寻找的角色的数量。这些是可用的量词:
*:零或更多
+:一个或多个
?:零或一
{3}:括号中的金额
将任何这些量词放在要指定数量的字符或类的末尾。此示例查找标准的七位数电话号码:
\ d {3} [* - ] \ d {3} [* - ] \ d {4}
正则表达式允许您根据文本字符串或单词周围的位置搜索模式。
正则表达式锚点。 Regex Anchors使用定位在JavaScript中查找匹配项。
这些是您的主要选择:
^:字符串的开头
$:字符串的结尾
\ b:单词边界(单词的开头或结尾)
如果您只想查找以字母开头的字符串,可以尝试:
^ [A-ZA-Z]
假设您只想找到“它”这个词,而不是包含字母I和T的单词; 这就是你使用单词边界的地方。
\ B(1 | 1)T \ b
正则表达式可以在网站设计时为您节省大量的开发时间。想象一下,尝试编写逻辑来完成本文中的任何示例。这将是一个可怕的混乱。一旦你对它们感到满意,你可能会发现自己真的很享受正则表达式的强大功能和灵活性。