反斜杠问题
import re
randstr = "Here is Edureka"
print(randstr)
Output:
Here is Edureka
这就是反斜杠问题,其中一个斜线从输出中消失了,这个特殊问题可以使用正则表达式来解决。
import re
randstr = "Here is Edureka"
print(re.search(r"Edureka", randstr))
Output:
<re.Match object; span=(8, 16), match='Edureka'>
这就是使用正则表达式解决反斜杠问题的简单方法。
匹配单个字符
使用正则表达式可以轻松地单独匹配字符串中的单个字符
import re
randstr = "12345"
print("Matches: ", len(re.findall("d{5}", randstr)))
Output:
Matches: 1
删除换行符
我们可以在 Python 中使用正则表达式轻松删除换行符
import re
randstr = '''
You Never
Walk Alone
Liverpool FC
'''
print(randstr)
regex = re.compile("
")
randstr = regex.sub(" ", randstr)
print(randstr)
Output:
You Never
Walk Alone
Liverpool FC
You Never Walk Alone Liverpool FC
可以从上面的输出中看到,新行已被空格替换,并且输出打印在一行上。
还可以使用许多其他东西,具体取决于要替换字符串的内容
: Backspace
: Formfeed
: Carriage Return
: Tab
: Vertical Tab
可以使用如下代码
import re
randstr = "12345"
print("Matches:", len(re.findall("d", randstr)))
Output:
Matches: 5
从上面的输出可以看出,d 匹配字符串中存在的整数。但是,如果我们用 D 替换它,它将匹配除整数之外的所有内容,与 d 完全相反。
接下来我们了解一些在 Python 中使用正则表达式的重要实际例子。
正则表达式的实际例子
我们将检查使用最为广泛的 3 个主要用例
·电话号码验证
· 电子邮件地址验证
· 网页抓取
电话号码验证
需要在任何相关场景中轻松验证电话号码
考虑以下电话号码:
· 444-122-1234
· 123-122-78999
· 111-123-23
· 67-7890-2019
电话号码的一般格式如下:
· 以 3 位数字和“-”符号开头
· 3 个中间数字和“-”号
· 最后4位数
我们将在下面的示例中使用 w,请注意 w = [a-zA-Z0-9_]
import re
phn = "412-555-1212"
if re.search("w{3}-w{3}-w{4}", phn):
print("Valid phone number")
Output:
Valid phone number
电子邮件验证
在任何情况下验证电子邮件地址的有效性。
考虑以下电子邮件地址示例:
·Anirudh@gmail.com
· Anirudh@com
· AC.com
· 123 @.com
我们只需一眼就可以从无效的邮件 ID 中识别出有效的邮件 ID,但是当我们的程序为我们做这件事时,却并没有那么容易,但是使用正则,就非常简单了。
指导思路,所有电子邮件地址应包括:
· 1 到 20 个小写和/或大写字母、数字以及 . _ % +
· 一个@符号
· 2 到 20 个小写和大写字母、数字和加号
· 一个点号
· 2 到 3 个小写和大写字母
import re
email = "ac@aol.com md@.com @seo.com dc@.com"
print("Email Matches: ", len(re.findall("[w._%+-]{1,20}@[w.-]{2,20}.[A-Za-z]{2,3}", email)))
Output:
Email Matches: 1
从上面的输出可以看出,我们输入的 4 封电子邮件中有一封有效的邮件。
这基本上证明了使用正则表达式并实际使用它们是多么简单和高效。
网页抓取
从网站上删除所有电话号码以满足需求。
要了解网络抓取,请查看下图:
我们已经知道,一个网站将由多个网页组成,我们需要从这些页面中抓取一些信息。
import urllib.request
from re import findall
url = "http://www.summet.com/dmsi/html/codesamples/addresses.html"
response = urllib.request.urlopen(url)
html = response.read()
htmlStr = html.decode()
pdata = findall("(d{3}) d{3}-d{4}", htmlStr)
for item in pdata:
print(item)
Output:
(257) 563-7401
(372) 587-2335
(786) 713-8616
(793) 151-6230
(492) 709-6392
(654) 393-5734
(404) 960-3807
(314) 244-6306
(947) 278-5929
(684) 579-1879
(389) 737-2852
...
我们首先是通过导入执行网络抓取所需的包,最终结果包括作为使用正则表达式完成网络抓取的结果而提取的电话号码。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理