代码之家  ›  专栏  ›  技术社区  ›  Scott Watermasysk

正则表达式来源。NET到Python

  •  0
  • Scott Watermasysk  · 技术社区  · 17 年前

    我有一个正则表达式,它在中运行得很好(尽管我确信它很弱)。NET/C#:

    ((^|\s))(?<tag>\@(?<tagname>(\w|\+)+))(?($|\s|\.))
    

    注意:我只是在尝试

    r = re.compile('((^|\s))(?<tag>\@(?<tagname>(\w|\+)+))(?($|\s|\.))')
    

    谢谢,

    2 回复  |  直到 17 年前
        1
  •  1
  •   Pierre Bourdon    17 年前

    • (?<name>...) 是 (?P<name>...)
    • (?...) 不存在,因为我不知道它是用来做什么的。NET,我猜不出任何等价物。谷歌的代码搜索并没有给我任何指示它可以用来做什么。

    此外,您应该使用Python原始字符串( r"I am a raw string" \n \s 作为逃逸序列没有任何意义,因此它没有被替换)。

        2
  •  0
  •   PaulMcG    17 年前

    是否有“(?”来防止创建单独的组?在Python的re中,这是“(:?”。试试这个:

    r = re.compile(r'((^|\s))(:?<tag>\@(:?<tagname>(\w|\+)+))(:?($|\s|\.))')
    

    此外,请注意原始字符串文字(引号前的“r”字符)的使用。原始文字抑制 '\' '\' 字符直接传递到re(否则,您需要 '\\' 对于每一个 '\' ).