正则表达式

什么是正则表达式?
正则表达式是程序员用来搜索文本中某些字符的模式匹配标记。正则表达式可以搜索几乎任何东西,具体取决于你如何构造它们。程序员们都在使用它,因为它们对于帮助计算机快速排序数据,并过滤掉可能导致错误的无意义字符非常有价值。

正则表达式看起来很可怕,特别是对于非程序员。看看这个:

1
[a-zA-Z0-9_.±]+@[a-zA-Z0-9_-]+.[a-zA-Z0-9_.-]+
实际上,它并没有那么糟糕,上面那个表达式匹配了电子邮件地址。正如您将看到的,表达式可以分解为单个字符,所有这些字符都告诉程序要查找的内容。正则表达式几乎是通用的。相同的一般语法适用于所有语言,此处和那里只有轻微的变化。大超小志的这篇文章包含Python和JavaScript以及普通旧正则表达式的示例。如果您使用其他语言,请不要担心。几乎所有内容都适用于您选择的语言。

正则表达式基础知识
从技术上讲,没有很多东西不能被认为是正则表达式,因为文本字符串非常简单。如果您使用“niuchao”作为正则表达式,编程语言将搜索该确切的字符串。第一个更动态的匹配字符是“.”字符。在此上下文中,点字符是通配符。如果您正在搜索它,您的程序将返回它找到的任何匹配字符。那么,如果你想寻找一个字符点怎么办?这也不难。如果要使用字符点,请在其前面添加反斜杠,如下所示:“.”。

反斜杠字符
不过,反斜杠在这里扮演了更多角色。大多数主要的正则表达式字符包括反斜杠。看一些例子:

\d:从0到9的数字
\w:“单词字符”字母,数字和下划线
\s:空白字符,包括制表符,换行符和常规空格
如果您使用大写字母而不是其中任何一个,那么您将得到相反的结果。例如,“\D”为您提供除数字之外的所有内容。

类 Class
反斜杠字符很好,但它们仍然有点僵硬。通常,您希望匹配字母,数字或一些特殊字符。将要匹配的字符放在一对方括号“[]”中,您的程序将匹配其中任何一个。这称为正则表达式类。

1
[abcd1234]
上面的例子仍然效率低下。相反,您可以使用短划线指定范围。 例如,所有小写字母:

1
[a-z]
您也可以列出范围。以下表达式匹配所有字母和数字:

1
[a-zA-Z0-9]
如果您要在字符集中包含短划线,请在最后添加它以防止对其进行评估。它也适用于其他特殊字符。

1
[a-zA-Z0-9_.±]
与反斜杠字符一样,您也可以在此处得到相反的结果。在类开头放置一个“^”,将其从结果中排除。这将从结果中排除数字和几个特殊字符:

1
[^0-9_+.-]
组 Group
组使用一组括号来分隔表达式。他们对数据进行分组,允许您的程序定位并使用它。当程序从Web地址中剥离“http://”时,它正在使用正则表达式组来完成该操作。正则表达式允许它以某些标准为目标,并且组允许它将各个部分分开。

组还允许您在一种模式或另一种模式之间进行选择。他们使用一个“|”在表达中充当“或”。下面的表达式将匹配以下任何一个:.com,.org,.net,.edu或.gov。

1
.(com|org|net|edu|gov)
量词
量词正是他们听起来的样子。他们告诉表达你正在寻找的角色的数量。这些是可用的量词:

*:零或更多
+:一个或多个
?:零或一
{3}:括号中的金额
将任何这些量词放在要指定数量的字符或类的末尾。此示例查找标准的八位数电话号码:

1
\d{3}[.-]\d{3}[.-]\d{4}
锚和边界
正则表达式允许您根据文本字符串或单词周围的位置搜索模式。主要用的有这些:

^:字符串的开头
$:字符串的结尾
\b:单词边界(单词的开头或结尾)
如果您只想查找以字母开头的字符串,可以尝试:

1
1
假设您只想找到“it”这个词,而不是包含字母I和T的单词,这就是你使用单词边界的地方。

1
\b(i|I)t\b


  1. a-zA-Z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值