此代码在Visual C ++ 2013中工作,但不在gcc / clang中: #if 0 R"foo( #else int dostuff () { return 23; } // )foo"; #endif dostuff(); Visual C ++首先删除if 0。 Clang首先扩展R原始string(并且从不定义dostuff)。 谁是对的,为什么?
有什么办法在Java中使用原始string(没有转义序列)? (我正在写相当数量的正则expression式代码,原始string会使我的代码更加可读) 我明白这个语言并不直接提供这个语言,但是有什么方法可以用任何方式“模拟”它们吗?
我很困惑,即使原始string将每个\转换为\\但是当这个\出现在最后它会引发错误。 >>> r'so\m\e \te\xt' 'so\\m\\e \\te\\xt' >>> r'so\m\e \te\xt\' SyntaxError: EOL while scanning string literal 更新: 现在, Python常见问题中也包含了这一点: 为什么原始string(rstring)不能以反斜杠结尾?
我第一次看到它用于在多行中构build正则expression式作为re.compile()的方法参数,所以我假定r代表正则expression式。 例如: regex = re.compile( r'^[AZ]' r'[A-Z0-9-]' r'[AZ]$', re.IGNORECASE ) 那么在这种情况下, r是什么意思? 我们为什么需要它?
当问这个问题时 ,我意识到我对原始string的了解不多。 对于自称是Django教练的人来说,这很糟糕。 我知道什么是编码,而且我知道自己得到什么是Unicode。 但是, r做了什么? 它会导致什么样的string? 而最重要的是,你到底做了什么? 最后,是否有任何可靠的方法从Unicodestring返回到一个简单的原始string? 嗯,顺便说一下,如果你的系统和你的文本编辑器字符集设置为UTF-8, u真的做了什么?