【问题标题】:Making some detail explanations in python string在python字符串中做一些详细的解释
【发布时间】:2012-10-12 13:37:38
【问题描述】:

用Java,我可以拆分字符串并给出一些详细的解释

String x = "a" + // First
           "b" + // Second
       "c";  // Third

// x = "abc"

如何在python中进行等价?

我可以拆分字符串,但不能像使用 Java 那样对此发表评论。

x = "a" \
"b" \
"c"

我需要这个功能来解释正则表达式的用法。

Pattern p = Pattern.compile("rename_method\\(" + // ignore 'rename_method('
                        "\"([^\"]*)\"," +    // find '"....",' 

【问题讨论】:

标签: python regex comments


【解决方案1】:

这个

x = ( "a" #foo
      "b" #bar
    )

会起作用的。

这里的魔法是通过括号完成的——python 自动在任何未终止的小括号内继续行 (([{)。请注意,当字符串彼此相邻放置时,python 还会自动连接字符串(我们甚至不需要 + 运算符!)- 真的很酷。

【讨论】:

  • @JoelCornett -- 当我第一次发现 + 是不必要的时,我认为这太酷了(没有双关语的意思:)。我认为存在特定功能可以使多行字符串更易于构建。连接也是在解析/编译为字节码的过程中完成的,因此效率更高。您可以争辩说这也是三重引号的用途,但它有点古怪,因为它有时真的会弄乱您的缩进。
【解决方案2】:

如果您想专门针对正则表达式执行此操作,您可以使用re.VERBOSE 标志轻松完成。来自 Python docs(向下滚动查看VERBOSE 标志的文档):

charref = re.compile(r"""
 &[#]                # Start of a numeric entity reference
 (
     0[0-7]+         # Octal form
   | [0-9]+          # Decimal form
   | x[0-9a-fA-F]+   # Hexadecimal form
 )
 ;                   # Trailing semicolon
""", re.VERBOSE)

【讨论】:

  • re.VERBOSE 文档中的重要位:“指定此标志后,RE 字符串中的空格将被忽略,除非空格位于字符类中或前面有未转义的反斜杠。 "我曾经在我的冗长正则表达式中有文字“PO BOX”,但无法弄清楚为什么它与我想要的不匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2021-03-29
  • 2023-03-12
  • 2017-03-04
  • 1970-01-01
  • 2012-09-05
  • 2019-09-08
相关资源
最近更新 更多