【问题标题】:Using set operators with python regex module将集合运算符与 python regex 模块一起使用
【发布时间】:2013-12-06 05:42:09
【问题描述】:

我无法让 set 运算符在 python-3.x 的正则表达式模块 (regex 2013-11-29) 中工作。例如,为了匹配 ASCII 字符减去我尝试过的标点符号:

import regex as rx

data = '(foo)'
for m in rx.finditer(r'[\p{ASCII}--\p{P}]+',data):
    print(m.group(0))     # expect 'foo', getting '(foo)'

文档给出了这个例子:

[\p{N}--[0-9]] # 集合包含除'0'以外的所有数字 .. '9'

我错过了什么吗?

【问题讨论】:

    标签: regex python-3.x


    【解决方案1】:

    听起来您需要明确选择使用版本 1 的行为,以便 -- 被解释为集合运算符,而不是包含在类中的字符。

    来自module web page

    版本 1 行为(新行为,不同于当前的重新 模块):

    由模式中的 VERSION1 或 V1 标志或 (?V1) 指示。

    .split 将以零宽度匹配分割字符串。

    内联标志应用于组或模式的末尾,它们可以是 关闭。

    支持嵌套集合和集合操作。

    Unicode 中不区分大小写的匹配默认使用完全大小写折叠。

    如果没有指定版本,正则表达式模块将默认为 正则表达式.DEFAULT_VERSION。在短期内,这将是 VERSION0,但在 从长远来看,它将是 VERSION1。

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 2022-01-14
      • 2020-04-22
      • 2017-11-17
      • 2013-09-10
      • 1970-01-01
      相关资源
      最近更新 更多