- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章python中如何正确使用正则表达式的详细模式(Verbose mode expression)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
简单介绍 。
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了.
下图展示了使用正则表达式进行匹配的流程:
正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败.
引言 。
当大家写的正则表达式比较长,比较复杂时,发现经常会写错,或者很难维护,遇到这种情况怎么办呢?这个不用急,聪明的设计人员早已经想到这种情况了,提供了一种叫做详细模式(Verbose mode expression)。当你使用这种模式时,可以给正则表达式添加注释,这样在维护时就不会像看天书了,同时也可以添加额外的空格,进行对齐排版.
紧凑模式的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import
re
address
=
re.
compile
(
'[\w\d.+-]+@([\w\d.]+\.)+(com|org|edu)'
)
candidates
=
[
u
'first.last@example.com'
,
u
'first.last+category@gmail.com'
,
u
'valid-address@mail.example.com'
,
u
'not-valid@example.foo'
,
]
for
candidate
in
candidates:
match
=
address.search(candidate)
print
(
'{:<30} {}'
.
format
(
candidate,
'Matches'
if
match
else
'No match'
)
)
|
详细模式的修改之后:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#python 3.6
#蔡军生
#http://blog.csdn.net/caimouse/article/details/51749579
#
import
re
address
=
re.
compile
(
'''''
[\w\d.+-]+ # username
@
([\w\d.]+\.)+ # domain name prefix
(com|org|edu) # TODO: support more top-level domains
'''
,
re.VERBOSE)
candidates
=
[
u
'first.last@example.com'
,
u
'first.last+category@gmail.com'
,
u
'valid-address@mail.example.com'
,
u
'not-valid@example.foo'
,
]
for
candidate
in
candidates:
match
=
address.search(candidate)
print
(
'{:<30} {}'
.
format
(
candidate,
'Matches'
if
match
else
'No match'
),
)
|
结果输出如下:
1
2
3
4
|
first.last@example.com Matches
first.last+category@gmail.com Matches
valid-address@mail.example.com Matches
not-valid@example.foo No match
|
参数解释:X VERBOSE 。
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之後;这可以让你更清晰地组织和缩进 RE。它也可以允许你将注释写入 RE,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後.
总结 。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我的支持.
原文链接:http://blog.csdn.net/caimouse/article/details/78426522 。
最后此篇关于python中如何正确使用正则表达式的详细模式(Verbose mode expression)的文章就讲到这里了,如果你想了解更多关于python中如何正确使用正则表达式的详细模式(Verbose mode expression)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
pod update --verbose 未完成,挂起。 CDN: trunk Relative path: Specs/7/4/b/GoogleToolboxForMac/2.1.2/Googl
我正在导入 Carbon进入我的 PowerShell 脚本;但是,当使用 -Verbose 运行我的脚本时,Carbon 也会输出很多 VERBOSE 语句。 是否可以静默导入模块,以便我可以忽略导
我正在创建一个调用Write-Verbose的.ps1脚本。我希望能够启用/禁用这些功能。 我希望调用脚本时可以传递-Verbose标志,并且一切正常。不幸的是,事实并非如此。 详细消息不会写出到主机
我们正在尝试用我们的 WAS(Websphere 应用程序服务器)实例调试一些严重的类加载器问题。 为此,我们提供了选项 -verbose:class 以查看 WAS 从何处加载哪个类。 对于大多数类
Powershell 中详细输出的默认颜色(例如 Write-Verbose 或 -Verbose 开关)是黄色的。这使其看起来像警告,尽管它并不重要。 如何更改详细输出的默认颜色? 最佳答案 这是可
根据回答like this one和我自己的经验,Powershell 可以自动传播 -Verbose(和 -Debug),非常方便。但是,当我想要将详细程度传播到的函数位于模块中时,这将停止工作。用
有没有一种简单的方法可以让 -Verbose 切换到 Powershell 中的其他函数调用“直通”? 我知道我可以在 $PSBoundParameters 中搜索标志并执行 if 语句: [Cmdl
也许在 PowerShell 中没有办法做到这一点。 如果我有文件 verboseTest.ps1 [CmdletBinding()] # CmdletBinding attribute ena
考虑重新设计数据库。想知道与以下内容有什么区别/注意事项: users fields ----- ------ id id user_id
我有一个冗长的 (re.X) 标记的正则表达式抛出异常,即使它看起来等同于它的压缩版本。 (我从后者构建了前者。) 精简版: import re test = 'catdog' test2 = 'do
我运行了这个测试脚本: use strict; use warnings; use Test::More tests => 3; use Carp; ok(1<2); pass(); fail();
我正在制作一个小型系统,我希望能够在整个系统中切换“详细”文本输出。 我创建了一个名为 globals.h 的文件: namespace REBr{ extern bool console_v
因此,我有一个包含大量调试输出的脚本,我可以使用 -v 标志打开/关闭这些输出。我当前的代码如下所示: def vprint( obj ): if args.verbose:
我知道 ansible -vvv 选项,但我不想看到所有命令的详细输出,我只想在任务失败时查看详细信息。 我怎样才能做到这一点? 附言。请提供可扩展的解决方案,必须编辑每个任务没有任何意义。 最佳答案
我正在使用 ant -f build.xml 运行一个 ant 脚本。该脚本应该编译我的项目并生成一个 jar 文件,但是在 ant 开始生成 jar 文件几秒钟后,该项目被终止,我在控制台中看到的只
我刚刚开始构建我的第一个 Rakefile(makefile 的 Ruby 版本),我想使用详细模式(如 makefile -V 或 bash -x)轻松调试我的脚本,是否有这样做的选项 ruby ?
本文整理了Java中org.zeromq.ZLoop.verbose()方法的一些代码示例,展示了ZLoop.verbose()的具体用法。这些代码示例主要来源于Github/Stackoverflo
我希望我的 ROS 包中的特定节点在 DEBUG 详细级别显示输出,而其他节点在 INFO 级别显示。我知道 rosconsole configuration file ,并且能够为包设置详细程度:
MS SQL Server 是否有一些配置选项可以启用更详细的错误消息。 具体示例:我想查看在插入期间违反约束的插入记录的实际字段值,以帮助追踪我无法重现的存储过程中的错误。 最佳答案 我不相信有任何
我正在学习 Coq 和我正在学习的书,( CPDT )大量使用了 auto在证明中。 由于我正在学习,因此我认为了解确切内容可能对我有帮助 auto在幕后做(越早越好)。有没有办法强制它准确显示它用来
我是一名优秀的程序员,十分优秀!