作者:AmitChaudhary译者:前端小智来源:dev点赞再看,微信搜索【大千世界】,B站关注【前端小智】这个没有大厂出身,却有一个向上积极向上的人。本文已收录到GitHubhttps://github.com/qq44924588...,文章已分类,也整理了很多我的文档和教程资料。最近开源了一个Vue组件,但是还不够完善。欢迎大家一起完善,也希望大家能给个star支持一下。谢谢。github地址:https://github.com/qq44924588...双12阿里服务器27元,一般点这里购买,可以找我返现30,相当于27元购买,仅限新用户,可以用家人手机号购买!在NLP中,根据模式检查文本或从与特定模式匹配的文本中提取内容是常见的任务。正则表达式是一个强大的工具。NLP(自然语言处理)是人工智能(AI)的一个子领域。尽管功能强大,但正则表达式常常令人生畏,因为我们需要记住许多命令,而且在复杂的结构中,需要一定程度的逻辑能力。在本文中,主要通过图表的方式来展示正则表达式的各种概念。目的当然是帮助大家,包括我自己,建立一个关于正则表达式的心智模型。心智模型让我们从一个简单的例子开始,我们试图在文本中找到酷这个词。使用正则表达式,我们可以简单地输入单词“cool”作为模式,它就会匹配该单词。当'cool'正则表达式匹配到我们期望的'cool'这个词时,它不是在词层面而是在字符层面进行操作,这是我们需要梳理的一点。注意点:正则表达式工作在字符级别,而不是单词级别。这意味着正则表达式'cool'也将匹配以下句子。基本构建块现在我们了解了要点,让我们看看如何使用正则表达式来匹配简单的字符。特定字符我们可以在正则表达式中指定字符,它将匹配文本中的所有实例。例如,下面给出的正则表达式将匹配文本中“a”的所有实例:“a”也可以使用0到9之间的任何数字来匹配数字。'3'注意,默认情况下,正则表达式是区分大小写的,所以后面的正则表达式不匹配任何东西。'A'空格字符我们可以使用特殊的转义序列来检测特殊字符,例如空格和换行符。除了上面常见的,我们还有:\r回车\f换页\e可执行模式特殊字符正则表达式提供了一堆内置的特殊字符,可以一次匹配一组字符,这些字符是反斜杠栏以\开头。模式:\d它匹配0到9之间的数字。请注意,匹配是单个数字。因此,我们在下面有4个不同的匹配项,而不是单个数字18.04。模式:\s它匹配任何空白字符(空格、制表符或换行符)。模式:\w它匹配任何小写字母(a到z)、大写字母(A到Z)、数字(0到9)和下划线。图案:。它匹配除换行符(\n)之外的任何字符。letstr='line1\nline2'str.match(/./g)//结果:["l","i","n","e","","1","l","i","n","e","2"]模式:否定如果i我们使用上述模式的大写形式,则表明它们的消极面。例如,如果\d匹配从0到9的任何数字,那么\D将匹配0到9以外的任何数字。charset字符集模式以[开始并以]结束,并匹配括号中的字符。例如,以下模式匹配任何字符'a'、'e'、'i'、'o'和'u'。我们还可以使用以下模式来替换\d的功能。除了指定所有数字,我们还可以使用连字-只需指定开始和结束数字。因此,我们可以用[0-9]代替[0123456789]:例如[2-4]可以用来匹配2到4之间的任意数字(即2或3或4)。我们可以在括号内使用上面提到的特殊字符。例如,匹配0到9之间的任何数字或空白字符:下面列出了一些常见的模式及其含义。锚正则表达式也有特殊的处理程序来使模式仅在字符串的开头或结尾匹配。我们只能使用^字符来匹配以指定开头的模式。例如,我们可以在字符后面使用$字符来表示它以指定的字符结束。示例:转义元字符考虑我们想要精确匹配单词“Mr.Stark”的情况。如果我们要配合史塔克先生的格式,那么就会有意想不到的效果。因为我们知道。在正则表达式中有特殊含义。因此,如果我们要精确匹配字符本身,就需要对特殊的元字符(如.、$等)进行转义。下面是元字符列表,直接使用记得转义。^$。*+?{}[]\|()Repeatclass现在我们可以对任何字符进行模式匹配,然后我们来一个更复杂的模式。匹配重复字符的愚蠢方法只使用你到目前为止学到的东西,天真的方法是重复模式。例如,我们可以通过重复字符级模式来匹配两位数字。\d\d量词正则表达式提供特殊的量词来指定它们前面字符的不同重复类型。固定重复我们可以使用{...}量词来指定模式应该重复多少次。例如,前面匹配两位数字的模式可以修改为:我们也可以使用相同的量词来指定重复的范围。例如,要匹配2位或4位数字,您可以使用以下模式:当应用于句子时,它将同时匹配4位和2位数字。请注意,最小和最大计数之间不应有任何空格,例如\d{2,4}不起作用。灵活的量词正则表达式还提供量词*、+和?,可用于指定字符的灵活重复。这?字符表示匹配0次或1次例如,假设我们要匹配单词“sound”和“sounds”,其中“s”是可选的。我们可以使用?量词。+字符表示匹配一次或多次。例如,我们可以使用常规的\d+来查找任意长度的数字。*字符表示它匹配0次或多次。在Python中的使用Python在标准库中提供了一个名为“re”的模块来使用正则表达式。原始字符串的需要为了在Python中指定正则表达式,我们在r之前创建原始字符串pattern=r'\d'以理解为什么我们在前面加上r,我们尝试打印没有**r**的表达式\t。>>>pattern='\t'>>>print(pattern)可以看到当我们不使用原始字符串时,字符串\t在Python中被视为制表符的转义符。现在我们将它转??换为原始字符串,我们得到我们指定的任何内容>>>pattern=r'\t'>>>print(pattern)\t使用re模块要使用re模块,我们需要导入它:importre1.re.findall该函数允许我们将所有匹配项作为字符串列表获取。importrere.findall(r'\d','123456')//['1','2','3','4','5','6']2.re.match此函数在搜索字符串开头的模式并将第一次出现作为匹配对象返回。如果未找到模式,则返回None。importrematch=re.match(r'batman','batmaniscool')print(match)//
