在Python中,我有一个像下面这样的长线:
patterns = re.compile(r'(^/afs|^/pkg|^/bin|^/dev|^/etc|^/usr|^/usr2|^/sys|^/sbin|^/proc)')
然后我试着把它改成下面的格式。然而,它不再像预期的那样工作了:
patterns = re.compile(r'(^/afs|\
^/pkg|\
^/bin|\
^/dev|\
^/etc|\
^/usr|\
^/usr2|\
^/sys|\
^/sbin|\
^/proc)')
我知道Python使用缩进的语法,所以可能这种格式不会工作也许?或者如果有的话,有正确的方法在Python中格式化它吗?
Python正则表达式有一个详细模式,允许您使用带注释的多行三引号。还要注意的是,re.match
(与re.search
相反)意味着一个^
,而/
不需要重复。
您可以添加一个前导(?x)
到模式或使用标志re.VERBOSE
或其别名re.X
打开详细模式:
import re
patterns = re.compile(r'''(?x)/(usr2| # comments also supported
sbin|
proc|
afs|
pkg| # better to put longer matches first
bin|
dev|
etc|
usr| # if before /usr2, would match this first
sys)''')
for trial in ('/afs/blah','/usr2/blah'):
print(patterns.match(trial))
输出:
<re.Match object; span=(0, 4), match='/afs'>
<re.Match object; span=(0, 5), match='/usr2'>
还请注意,在详细模式下,空格和注释将被忽略,因此,如果有重要的空格,请将其与\s
或其他转义代码显式匹配。
这很简单:
patterns = re.compile(r'(^/afs|'
r'^/pkg|'
r'^/bin|'
r'^/dev|'
r'^/etc|'
r'^/usr|'
r'^/usr2|'
r'^/sys|'
r'^/sbin|'
r'^/proc)')
我建议使用一个体面的Python编辑器或IDE,因为它们通常会自动为您完成这一任务。我碰巧使用了PyCharm,但我相信VSCode或其他流行的IDE和代码编辑器也可以在这方面做得很好。
如果您想将所有内容保存在一组引用中,可以使用docstring,这样就不需要换行符或多个r'^…'
符号,即。
patterns = re.compile(r"""
...
""")
如以下文章所述:如何使用长正则表达式进行行延续?
我通常觉得这种方法更具可读性。
本文向大家介绍powershell 将文本转换成表格的另一种可行方式,包括了powershell 将文本转换成表格的另一种可行方式的使用技巧和注意事项,需要的朋友参考一下
问题内容: 有没有一种简单的方法可以将一种日期格式转换为PHP中的另一种日期格式? 我有这个: 但是我当然希望它返回一个当前日期,而不是返回“黎明”。我究竟做错了什么? 问题答案: 第二个参数必须是正确的时间戳(自1970年1月1日以来的秒数)。您正在传递一个字符串,date()无法识别。 您可以使用 strtotime() 将日期字符串转换为时间戳。但是,即使strtotime()也无法识别格式
问题内容: 我知道Internet Explorer具有自动换行样式,但是我想知道是否有跨浏览器的方法可以对div中的文本进行这种操作。 最好是CSS,但JavaScript代码片段也可以正常工作。 编辑:是的,指的是长长的弦,为人们加油! 问题答案: 阅读原始评论时,卢瑟福正在寻找一种 跨浏览器的 方式来包装 不间断的 文本(根据他对IE的自动换行设计,旨在破坏不间断的字符串)。 我现在已经使用
问题内容: 如果输入大小太小,则库会自动序列化 流中地图的执行,但是这种自动化不会并且也不会考虑地图操作的繁重程度。有没有办法 强制parallelStream()实际并行化CPU重映射? 问题答案: 似乎存在根本的误解。链接的“问答”讨论了由于OP没有 看到预期的加速,流显然不能并行工作。结论是,有没有好处在 并行处理工作负载是否太小,不,有一个自动回退到顺序执行。 实际上是相反的。如果您请求并
问题内容: 我需要可视化2D numpy数组。我为此使用pyplot。这是代码: 我得到预期的输出。 现在我的问题是,有什么方法可以将上述代码中的“ img”从pyplot类型转换为numpy类型。我需要这样做,以便可以将可视化文件加载为opencv图像并对其进行进一步处理。我正在使用python 2.7,32位。 请帮助 谢谢 编辑1:在Thorsten Kranz解决方案之后 程序终止后,我从
问题内容: 客户要求将Oracle DB SQL中的1行拆分为6行。 假设,最初的SQL(具有多个联接的复杂sql等)进入9列: 从X,Y,Z中选择A,B,C,D,E,F,G,H,I。。。(但查询非常复杂) 1)A,B,C,D,E,F,G,H,I 现在,客户要求返回返回到上述模式的每一行,新的输出应如下所示: 1)A,B,C,’D’,D 2)A,B,C,’E’,E 3)A, B,C,’F’,F 4