【问题标题】:nested regular expressions in pythonpython中的嵌套正则表达式
【发布时间】:2009-12-17 23:06:04
【问题描述】:

在 perl 中我可以这样做:

$number = qr/ zero | one | two | three | four | five | six | seven | eight | nine /ix;
$foo = qr/ quantity: \s* $number /ix;

我的实际正则表达式有很多行,并且包含两位数和序数(例如,“二十二”、“四十四”和“十二”都是完全匹配的),我在几个地方使用它。这个表达式编译速度很快,但它肯定不是微不足道的。我更喜欢编译一次,然后将它添加到其他正则表达式中,因为 Perl 允许。

有没有办法在 Python 中以这种方式嵌套正则表达式?

【问题讨论】:

标签: python nested expression


【解决方案1】:

在 python 中,您通过将字符串传递给 re.compile 来构建正则表达式。 您可以通过进行常规字符串操作来“嵌套”正则表达式:

#!/usr/bin/env python
import re
number = 'zero | one | two | three | four | five | six | seven | eight | nine'
foo = re.compile(' quantity: \s* (%s) '%number,re.VERBOSE|re.IGNORECASE)
teststr=' quantity:    five '
print(foo.findall(teststr))
# ['five']

【讨论】:

    【解决方案2】:

    这可能不太一样。但你可以这样做:

    import re
    number = "(?:zero | one | two | three | four | five | six | seven | eight | nine)"
    foo = "quantity: \s* " + number
    bar = re.compile(foo, re.I | re.X)
    

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 2016-08-24
      • 2013-12-05
      相关资源
      最近更新 更多