正则表达式1:https://developer.aliyun.com/article/1549117
11、匹配一个或多个字符
+匹配一个或多个字符(至少一个;不匹配零个字符的情况)。
[0-9]+将匹配一个或多个连续的数字。
字符串
Send personal email to ben@forta.com orben.forta@forta.com. For questions about abook use support@forta.com. If your messageis urgent try ben@urgent.forta.com. Feelfree to send unsolicited email tospam@forta.com (wouldn't it be nice ifit were that simple, huh?).
正则表达式
[\w.]+@[\w.]+\.\w+
结果
ben@forta.com orben.forta@forta.com support@forta.com ben@urgent.forta.com tospam@forta.com
12、匹配零个或多个字符
这种匹配需要用*元字符来完成。*的用法与+完全一样——只要把它放在一个字符(或一个字符集合)的后面,就可以匹配该字符(或字符集合)连续出现零次或多次的情况。
字符串
Hello .ben@forta.com is my email address
正则表达式
\w[\w.]*@[\w.]+\.\w+
结果
ben@forta.com
13、匹配零个或一个字符
?只能匹配一个字符(或字符集合)的零次或一次出现,最多不超过一次——请仔细体会?与+和*的相似和区别之处。如果需要在一段文本里匹配某个特定的字符(或字符集合)而该字符可能出现、也可能不出现,?无疑是最佳的选择。
字符串
The URL is http://www.forta.com/,to connectsecurely use https://www.forta.com/ instead.
正则表达式
https?://[\w./]+
这个模式的开头部分是https?。?在这里的含义是:我前面的字符(s)要么不出现,要么最多出现一次。换句话说,https?://既可以匹配http://,也可以匹配https://,但也就仅此而已。
结果
1. http://www.forta.com/ 2. https://www.forta.com/
这种写法可读性更强。
14、为重复匹配次数设定一个区间
{}语法还可以用来为重复匹配次数设定一个区间——也就是为重复匹配次数设定一个最小值和一个最大值。这种区间必须以{2, 4}这样的形式给出——{2, 4}的含义是最少重复2次、最多重复4次。在下面的例子里,我们将使用一个这样的正则表达式来检查日期的格式:
字符串
4/8/03 10-6-2004 2/2/2 01-01-01
正则表达式
\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}
结果
4/8/03 10-6-2004 01-01-01
15、匹配“至少重复多少次”
{3, }表示至少重复3次,与之等价的说法是“必须重复3次或更多次”
字符串
1001: $496.80 1002: $1290.69 1003: $26.43 1004: $613.42 1005: $7.61 1006: $414.90 1007: $25.00
正则表达式
\d+: \$\d{3,}\.\d{2}
结果
1001: $496.80 1002: $1290.69 1004: $613.42 1006: $414.90
16、防止过度匹配
*和+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的。
懒惰型元字符的写法很简单,只要给贪婪型元字符加上一个?后缀即可。
字符串
This offer is not available to customersliving in <B>AK</B> and <B>HI</B>
正则表达式
<[Bb]>.*?</[Bb]>
结果
<B>AK</B> <B>HI</B>
过度匹配
非过度匹配
17、单词边界
限定符\b指定的单词边界。\b用来匹配一个单词的开始或结尾。
字符串
The cat scattered his food all over the room.
正则表达式
\bcat\b
结果
cat