编程语言中的正则表达式(RE)是用于描述搜索模式的特殊文本字符串。 这对于从文本(例如代码,文件,日志,电子表格甚至文档)中提取信息非常有用。
使用正则表达式时,首先要认识到的是,所有内容本质上都是一个字符,并且我们正在编写模式以匹配特定的字符序列(也称为字符串)。 ASCII或拉丁字母是键盘上的字母,Unicode用于匹配外来文本。 它包括数字和标点以及所有特殊字符,例如$#@!%等。
例如,正则表达式可以告诉程序从字符串中搜索特定文本,然后相应地打印出结果。 表达式可以包括
在Python中,正则表达式表示为RE(通过re模块导入的RE,regexes或regex模式)。 Python通过库支持正则表达式。 在Python中,正则表达式支持各种功能,例如修饰符,标识符和空白字符。
import re
我们将通过使用表达式(w +)和(^)进行此简单练习,开始表达式教程。
在这里,我们将看到一个示例,说明如何在代码中使用w +和^表达式。 我们将在本教程的后面部分介绍re.findall函数,但有一段时间我们只关注\ w +和\ ^表达式。
例如,对于我们的字符串“ guru99,教育很有趣”(如果我们使用w +和^执行代码),它将给出输出“ guru99”。
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print(r1)
请记住,如果您从w +中删除+ sign,输出将发生变化,并且只会给出第一个字母的第一个字符,即[g]
为了理解此正则表达式在Python中的工作方式,我们从一个简单的split函数示例开始。 在该示例中,我们使用“ re.split”函数拆分了每个单词,同时使用了表达式\ s,该表达式允许分别解析字符串中的每个单词。
当您执行此代码时,它将为您提供输出[‘we’,’are’,’splitting’,’the’,’words’]。
现在,让我们看看如果从s中删除“ \”会发生什么。 输出中没有’s’字母,这是因为我们已经从字符串中删除了’\’,并且它将“ s”视为常规字符,因此只要在字符串中找到“ s”的地方就将单词分开。
同样,Python中还有一系列其他正则表达式,您可以在Python中以各种方式使用它们,例如\ d,\ D,$,\。,\ b等。
这是完整的代码
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print((re.split(r'\s','we are splitting the words')))
print((re.split(r's','split the words')))
接下来,我们将看到与正则表达式一起使用的方法的类型。
“ re”包提供了几种对输入字符串实际执行查询的方法。 我们将要看到的方法是re.match()re.search()re.findall()
注意:基于正则表达式,Python提供了两种不同的基本操作。 match方法仅在字符串的开头检查匹配项,而search在字符串的任何位置检查匹配项。
re.match()函数将搜索正则表达式模式并返回第一个匹配项。 此方法仅在字符串的开头检查匹配项。 因此,如果在第一行找到匹配项,则返回匹配对象。 但是,如果在其他行中找到匹配项,则返回null。
例如,考虑以下代码。 表达式“ w +”和“ \ W”将匹配以字母“ g”开头的单词,此后,将不标识任何以“ g”开头的单词。 要检查列表或字符串中每个元素的匹配情况,我们运行forloop。
re.search()函数将搜索正则表达式模式并返回第一个匹配项。 与re.match不同,它将检查输入字符串的所有行。 当找到模式时,它将返回一个匹配对象;如果未找到模式,则返回“ null”
为了使用search()函数,您需要先导入re,然后执行代码。 search()函数采用“模式”和“文本”从我们的主字符串中进行扫描
例如,在这里我们在文本字符串“ Software Testing is fun”中寻找两个文字字符串“ Software testing”“ guru99”。 对于“软件测试”,我们找到了匹配项,因此它以“找到匹配项”返回输出,而对于单词“ guru99”,我们在字符串中找不到,因此它以“无匹配项”返回输出。
findall()模块用于搜索与给定模式匹配的“所有”事件。 相反,search()模块将仅返回与指定模式匹配的第一个匹配项。 findall()将遍历文件的所有行,并在单个步骤中返回模式的所有非重叠匹配。
例如,在这里我们有一个电子邮件地址列表,并且我们希望从列表中取出所有电子邮件地址,我们使用re.findall方法。 它将从列表中找到所有电子邮件地址。
这是完整的代码
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print((z.groups()))
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
if re.search(pattern, text):
print('found a match!')
else:
print('no match')
abc = 'guru99@google.com
, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print(email)
许多Python Regex方法和Regex函数采用一个称为Flags的可选参数。 该标志可以修改给定Regex模式的含义。 为了理解这些,我们将看到这些标志的一个或两个示例。
Python中使用的各种标志包括
在多行中,模式字符[^]与字符串的第一个字符和每行的开头相匹配(紧跟在每个换行符之后)。 表达式小“ w”用于用字符标记空格。 运行代码时,第一个变量“ k1”仅输出单词guru99的字符“ g”,而添加多行标志时,它将提取字符串中所有元素的第一个字符。
这是代码
import re
xx = """guru99
careerguru99
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print(k1)
print(k2)
同样,您还可以使用其他Python标志,例如re.U(Unicode),re.L(关注区域设置),re.X(允许注释)等。
Python 2示例
上面的代码是Python 3的示例,如果要在Python 2中运行,请考虑以下代码。
# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1
# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))
# Using re.findall for text
import re
list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
z = re.match("(g\w+)\W(g\w+)", element)
if z:
print(z.groups())
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
print 'Looking for "%s" in "%s" ->' % (pattern, text),
if re.search(pattern, text):
print 'found a match!'
else:
print 'no match'
abc = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print email
# Example of re.M or Multiline Flags
import re
xx = """guru99
careerguru99
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2
编程语言中的正则表达式是用于描述搜索模式的特殊文本字符串。 它包括数字和标点以及所有特殊字符,例如$#@!%等。表达式可以包含文字
在Python中,正则表达式表示为RE(RE,正则表达式或正则表达式模式)通过re模块嵌入。