栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“原始字符串正则表达式”到底是什么?如何使用它?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“原始字符串正则表达式”到底是什么?如何使用它?

Zarkonnen的回答确实回答了您的问题,但没有直接回答。让我尝试更直接一些,看看我是否可以从扎尔肯恩那里获得赏金。

如果您停止使用术语“原始字符串正则表达式”和“原始字符串模式”,则可能会更容易理解。这些术语将两个不同的概念混为一谈:Python源代码中特定字符串的表示形式,以及该字符串表示的正则表达式。

实际上,将它们视为两种不同的编程语言(每种都有自己的语法)会很有帮助。Python语言具有源代码,该源代码除其他外可以构建具有某些内容的字符串,并调用正则表达式系统。正则表达式系统具有驻留在字符串对象中并与字符串匹配的源代码。两种语言都使用反斜杠作为转义字符。

首先,了解一个字符串是一个字符序列(即字节或Unipre代码点;这里的区别并不重要)。有多种方法可以在Python源代码中表示字符串。一个 原始字符串
仅仅是这些表象之一。如果两个表示产生相同的字符序列,则它们会产生等效的行为。

想象一个2字符的字符串,由 反斜杠 字符和 n 字符组成。如果您知道 反斜杠 的字符值为92, n
的字符值为110,则此表达式将生成我们的字符串:

s = chr(92)+chr(110)print len(s), s2 n

常规的Python字符串表示法

"n"
不会生成此字符串。而是生成带有换行符的单字符字符串。在Python文档 2.4.1。
字符串文字
说:“反斜杠()字符用于转义具有特殊含义的字符,例如换行符,反斜杠本身或引号字符。”

s = "n"print len(s), s1

(请注意,在此示例中看不到换行符,但是如果仔细看,您会在“ 1”之后看到空白行。)

要获得两个字符的字符串,我们必须使用另一个 反斜杠 字符来转义原始 反斜杠 字符的特殊含义:

s = "\n"print len(s), s2 n

如果要表示其中包含许多 反斜杠 字符的字符串怎么办?Python文档 2.4.1。
字符串文字
继续,“字符串文字可以选择以字母’r’或’R’开头;此类字符串称为 原始字符串, 并使用不同的规则来解释反斜杠转义序列。”
这是我们的两个字符的字符串,使用原始字符串表示形式:

s = r"n"print len(s), s2 n

因此,我们有三种不同的字符串表示形式,它们都给出相同的字符串或字符序列:

print chr(92)+chr(110) == "\n" == r"n"True

现在,让我们来看一下正则表达式。在Python文档,7.2。

re

正则表达式操作
说:“正则表达式使用反斜杠字符(’')表示特殊形式或允许使用特殊字符而无需调用特殊含义。这与Python在同一目的中出于相同目的使用同一字符相冲突。字符串文字…”

如果您想要一个与换行符匹配的Python正则表达式对象,则需要一个2个字符的字符串,该字符串由 反斜杠 字符和 n
字符组成。以下代码行都将prog设置为可识别换行符的正则表达式对象:

prog = re.compile(chr(92)+chr(110))prog = re.compile("\n")prog = re.compile(r"n")

因此,为什么“通常使用这种原始字符串表示法在Python代码中表示模式”。?因为正则表达式通常是静态字符串,所以方便地表示为字符串文字。从正则表达式包含 反斜杠
字符时,原始字符串是一种方便的选择,从可用的不同字符串文字符号中选择。

问题

:那表情

re.compile(r"stWord")
呢? :通过将字符串与正则表达式编译分开,并分别理解它们,会更容易理解。

s = r"stWord"prog = re.compile(s)

该字符串

s
包含八个字符: 反斜杠s反斜杠t 和四个字符
Word

:制表符和空格字符会怎样? :在Python语言级别,字符串

s
没有 制表符空格 字符。它从四个大字: 反斜杠
小号反斜杠牛逼
。同时,正则表达式系统将该字符串视为正则表达式语言中的源代码,其含义是“匹配由空格字符,制表符和四个字符组成的字符串
Word

:如果将其当作反斜杠和反斜杠t对待,您如何匹配它们? :也许将单词“ you”和“
that”更具体地说明一个问题:正则表达式系统如何匹配表达式backlash-s和backslash-t?作为“任何空白字符”和“ 制表 符”。

:或者如果您有3个字符的字符串反斜杠-n-换行符,该怎么办? :在Python语言中,可以将3个字符的字符串反斜杠-n-
换行符表示为常规字符串

"\nn"
,或原始加常规字符串
r"n""n"
或其他方式。当找到任何两个连续的换行符时,正则表达式系统将匹配3个字符的字符串反斜杠-n- 换行符

注意:所有示例和文档参考均针对Python 2.7。

更新 :合并了@Vladislav Zorov和@ m.buettner的答案以及@Aerovistae的后续问题的说明。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号