标签: rawstring

如何从Vim中的语法高亮中排除C++原始字符串文字?

老实说,原始字符串文字是C++语言的一个很好的补充.但是(正如预期的那样)编辑们很难正确地展示这些文字.

我正在使用Vim 7.4和开箱即用的原始字符串文字完全打破语法高亮.例如在

char const txt[] = R"(printf(")";
Run Code Online (Sandbox Code Playgroud)

第二个'('在vim中突出显示为红色.

就像是

char const txt2[] = R"(  "{{"  )";
Run Code Online (Sandbox Code Playgroud)

打破花括号的突出显示和基于语法的自动识别 - 依此类推.

首先,我很乐意让Vim忽略语法高亮之间R"(和之间的所有)"内容.

但请注意,原始字符串文字是灵活的 - 在第一个/最后一个双引号/括号对之间允许任意匹配字符串,例如

R"abcd()")")abcd"
Run Code Online (Sandbox Code Playgroud)

也是一个有效的原始字符串文字编码

)")"

另请参阅cppreference链接以获取语法的一般定义.

因此,我的问题是如何配置Vim,以便正确识别C++原始字符串文字.

Vim似乎已经包含了一些正确的synatx功能,突出了嵌入在宿主语言中的语言片段(例如,对于编译器 - 编译器源文件).也许它们也可以用于原始字符串文字案例?

c++ vim rawstring c++11 vim-syntax-highlighting

7
推荐指数
2
解决办法
1236
查看次数

如何在 Python 中正确编写原始多行字符串?

  1. 我知道您可以通过以下几种方式创建多行字符串:

三重行情

'''
This is a 
multi-line
string.
'''
Run Code Online (Sandbox Code Playgroud)

串联

('this is '
'a string')
Run Code Online (Sandbox Code Playgroud)

逃跑

'This is'\
'a string'
Run Code Online (Sandbox Code Playgroud)
  1. 我也知道在字符串前面加上前缀r会使它成为原始字符串,对文件路径很有用。

    r'C:\Path\To\File'
    
    Run Code Online (Sandbox Code Playgroud)

但是,我有一个很长的文件路径,它跨越多行并且需要是一个原始字符串。我该怎么做呢?

这有效:

In [1]: (r'a\b'
   ...: '\c\d')
Out[1]: 'a\\b\\c\\d'
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,这不会:

In [4]:  (r'on\e'
   ...: '\tw\o')
Out[4]: 'on\\e\tw\\o'
Run Code Online (Sandbox Code Playgroud)

为什么"t"只有一个反斜杠?

python string multiline rawstring

7
推荐指数
1
解决办法
1万
查看次数

在C++中的原始字符串中转义R"()"

  string raw_str = R"(R"(foo)")";
Run Code Online (Sandbox Code Playgroud)

如果我有R"()"一个原始字符串,这会导致解析器混淆.(即,它认为最左边)"是原始字符串的结尾.

我怎么逃避这个?

c++ rawstring c++11

7
推荐指数
2
解决办法
5140
查看次数

当CPP行拼接在C++ 0x原始字符串中撤消时,是否需要保留原始换行序列?

最新的C++ 0x草案n3126说:

删除反斜杠字符(\)后面紧跟一个新行字符的每个实例,拼接物理源代码行以形成逻辑源代码行.

...

在原始字符串文字的r-char序列中,将恢复在阶段1和2中执行的任何转换(三字符,通用字符名称和行拼接).

从技术上讲,这意味着C++预处理器只识别反斜杠后跟换行符,但我知道一些C++实现也允许Windows或经典Mac风格的行结尾.

是否需要符合C++ 0x的实现来保留紧跟\在原始字符串的r-char序列中的反斜杠字符的换行符序列?也许更好的问题是:是否需要Windows C++ 0x编译器来撤消每个行拼接"\\\r\n"而不是"\\\n"

c++ rawstring c-preprocessor c++11

6
推荐指数
1
解决办法
434
查看次数

Python - 原始字符串文字

我不明白原始字符串文字是如何工作的.我知道在使用r它时会忽略所有特殊内容,比如在执行\n此操作时将其视为\n而不是新行.但后来我试着这样做:

x = r'\'
Run Code Online (Sandbox Code Playgroud)

它说SyntaxError: EOL while scanning string literal而不是'\'

为什么?我没弄错吗?以及对此的解释是什么:

print r'\\' # gives '\\'
print r'\\\' # gives SyntaxError
Run Code Online (Sandbox Code Playgroud)

python rawstring

6
推荐指数
2
解决办法
2815
查看次数

Python中的原始字符串和正则表达式

我在以下代码中对原始字符串有一些困惑:

import re

text2 = 'Today is 11/27/2012. PyCon starts 3/13/2013.'
text2_re = re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text2)
print (text2_re) #output: Today is 2012-11-27. PyCon starts 2013-3-13.

print (r'(\d+)/(\d+)/(\d+)') #output: (\d+)/(\d+)/(\d+)
Run Code Online (Sandbox Code Playgroud)

正如我理解原始字符串,没有r,\被视为转义字符; 使用r,反斜杠\被视为字体.

但是,我在上面的代码中无法理解的是:在正则表达式第5行中,即使有一个r,里面的" \ d "被视为一个数字[0-9]而不是一个反斜杠\加一个信d.

在第二个打印行8中,所有字符都被视为原始字符串.

有什么不同?

附加版:

我做了以下四种变化,有或没有r:

import re

text2 = 'Today is 11/27/2012. PyCon starts 3/13/2013.'
text2_re = re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text2)
text2_re1 = re.sub('(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text2)
text2_re2 = re.sub(r'(\d+)/(\d+)/(\d+)', …
Run Code Online (Sandbox Code Playgroud)

python regex escaping backslash rawstring

6
推荐指数
2
解决办法
7502
查看次数

Python Argparse:原始字符串输入

抱歉,如果以前曾问过这个问题,我确实进行了搜索,但所有命中似乎都与python raw字符串有关,而不是argparse。

无论如何,我有一个代码,用户输入一个字符串,然后对该字符串进行处理。但是,我有一个问题,因为我希望我的代码能够区分\n和,\\n以便用户可以控制他们是否换行或\n分别出现在输出中。

这本身非常简单,并且我可以使逻辑工作来检查字符串等。但是,argparse似乎并没有保持输入字符串的原始状态。因此,如果我要写:Here is a list:\nItem 1它将解析为Here is a list:\\nItem 1。如果要在输入字符串中替换\n\\n,则会解析出完全相同的事物,因此无法区分两者。

我可以包括bodge(例如,我可以让用户输入发言权$\n\n出现在输出,或者只是\n一个换行符)。但这很麻烦,并使代码的使用复杂化。

有没有办法确保被argparse解析的字符串是原始的?(即,如果我输入\n它解析\n而不是\\n

再次,很抱歉,如果以前曾有人问过这个问题,但是我找不到答案,经过一个多小时的尝试找到答案后,我没主意了(不要再犹豫了)。提前为任何和所有帮助加油。

示例代码(很抱歉,如果这不起作用,请不确定如何最好地为argparse做示例代码!):

import argparse

parser = argparse.ArgumentParser( description = 'Test.' )
parser.add_argument( 'text', action = 'store', type = str, help = 'The text to parse.' )

args = parser.parse_args( )

print( repr( args.text ) )
Run Code Online (Sandbox Code Playgroud)

python string rawstring argparse

6
推荐指数
1
解决办法
1万
查看次数

原始字符串文字 - 删除前导缩进

编辑:原始字符串文字已从JDK 12中删除,但我将打开此问题并在重新引入Raw String Literals时相应地编辑它.


在测试Raw String Literals(这是Java 12中的预览功能)时,我遇到了以下代码片段:

System.out.println(`
        Test 1
            Test 2
                Test 3
`);
Run Code Online (Sandbox Code Playgroud)

其中输出如下:

          
        Test 1
            Test 2
                Test 3
                          
Run Code Online (Sandbox Code Playgroud)

但是,我希望输出类似于以下内容:

Test 1
    Test 2
        Test 3
Run Code Online (Sandbox Code Playgroud)

删除前导缩进以匹配预期格式的最简单方法是什么?

java string indentation rawstring java-12

6
推荐指数
1
解决办法
281
查看次数

R 4.0.0。使定义 foo"(...)" 运算符成为可能,类似于新引入的 r"(...)" 语法?

R 4.0.0 为原始字符串引入了新语法:

r"(raw string here can contain anything except the closing sequence)"
Run Code Online (Sandbox Code Playgroud)

但是 R 3.xx 中的相同构造产生了语法错误:

错误:"r"(asdasd)"" 中的意外字符串常量

这是否意味着解释器在 R 4.0.0 中发生了变化。?
如果是这样 - R 4.0.0。提供一种机制来定义自定义函数,例如foo"()"

syntax interpreter r rawstring

6
推荐指数
1
解决办法
364
查看次数

原始字符串中的换行符是否依赖平台?

原始字符串中的换行符是否依赖平台?

val a = "one\ntwo";

val b = """one
two"""

println(a == b)
Run Code Online (Sandbox Code Playgroud)

换句话说,println上面的陈述是否保证打印true

string cross-platform line-breaks rawstring kotlin

5
推荐指数
1
解决办法
1233
查看次数