Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在Python中静态创建正则表达式吗?_Python_Regex - Fatal编程技术网

可以在Python中静态创建正则表达式吗?

可以在Python中静态创建正则表达式吗?,python,regex,Python,Regex,我是ruby程序员,在ruby中可以静态地创建regexp,比如/myregexp/ 在python中,我找到的唯一方法是使用re.compile'myregexp'从字符串以友好方式创建它 这没什么大不了的,但我不喜欢使用dinamyc sintax创建静态不可变对象 根据所使用的函数,您不必编译正则表达式,但它不是Ruby或Perl中的内置运算符。当涉及正则表达式时,pythonjava更接近正则表达式 它最接近于静态,尽管它最终将在函数中编译,但Python文档中是这样的: >>

我是ruby程序员,在ruby中可以静态地创建regexp,比如/myregexp/

在python中,我找到的唯一方法是使用re.compile'myregexp'从字符串以友好方式创建它


这没什么大不了的,但我不喜欢使用dinamyc sintax创建静态不可变对象

根据所使用的函数,您不必编译正则表达式,但它不是Ruby或Perl中的内置运算符。当涉及正则表达式时,pythonjava更接近正则表达式

它最接近于静态,尽管它最终将在函数中编译,但Python文档中是这样的:

>>> import re
>>> m = re.search('(?<=abc)def', 'abcdef')
>>> m.group(0)
'def'

您可以执行以下操作:

whatever_re = re.compile(r'whatever')

def function_which_uses_a_re(stuff):
    match = whatever_re.match(stuff)

这将相当于Ruby的功能。。。预先编译re一次,并反复使用。

Ruby仍需在某个阶段将regex编译为Regexp对象。这在Ruby中并不明确。@nneonneo:是的。主要的区别在于=~操作符提供的语法糖分,而Python和Java缺少这种糖分。@KenHampson:True。顺便说一下,为了强调,我认为最好使用*而不是使用代码符号。这表现为句法上的糖分而不是句法上的糖分,这在英语中似乎更自然。个人喜好,真的,但这似乎是这里大多数人的做法。@nneonneo:有趣的一点是:斜体与突出显示。我会尝试切换。谢谢大家的快速回复,伙计们!=现在让我们回到编码上来,因为现在才凌晨1点!Python使用一个regexp缓存,所以即使在循环中反复使用它作为re.matchpat、str也不是那么糟糕。