字符串中 char 位置的转义字符:R lang

Escape character for Location of char in a string: R lang

我正在尝试获取 \/ 在字符串中的位置。下面是我正在尝试的代码:

x <- "<span id=\"ref_12590587_l\">6,803.61</span>_l>"
gregexpr("\\", x)
which(strsplit(x, "")[[1]]=="\")

我的问题是当我在 Rstudio 中尝试这些代码时,我得到继续提示,REPL 提示变为 +。这些代码适用于其他字符。

为什么我会收到继续提示,即使 \ 是反引号?

编辑: 更正了评论后的字符串。

您必须添加另一个斜杠(如 stribizhev 在评论中所说)。所以你正在寻找

gregexpr("\\", x)

原因是您需要两次转义 \。所以 \ 只给你 1 个反斜杠。当你输入 3 时,第三个反斜杠实际上是在转义引号!

查看示例:

gregexpr("\"", 'hello, "hello"')

这是在字符串中搜索引号。

只是为了正式表达我的意见:

  1. 您的 x 变量不包含任何反斜杠,这些是允许我们将文字引号放入字符串中的转义字符。
  2. gregexpr("\\", x) 包含非闭合字符串文字,因为右侧的引号被转义,因此被视为文字引号,而不是用于 "close" 的引号字符串文字。
  3. 要在 gregexpr 中搜索文字 \,我们需要 4 个反斜杠 \\,因为 gregexpr 需要正则表达式。在正则表达式中,“\”是一个特殊符号,因此必须为正则表达式引擎进行转义。但是在 gregexpr 中,我们传递了一个字符串,它本身使用 \ 来转义像 \n 这样的实体。因此,我们需要先对 R 的反斜杠进行转义,然后对正则表达式引擎进行转义。

也就是说,您可以使用

gregexpr("\\", x) 

仅获取文字反斜杠,或者

gregexpr("\\|/", x)

还要查找正斜杠。

IDEONE demo