0

我正在尝试使用 gsub 替换"?""."空白空间。

gsub(".", "")我意识到这是和之间的区别gsub(/./, ""),但我不知道它是什么。有人可以解释吗?

此外,gsub("?","")似乎工作,并gsub(/?/,"")没有工作。我们怎样才能gsub(/?/,"")工作?

4

3 回答 3

3

gsub("?", "")匹配文字?,而gsub(/?/, "")使用正则表达式来查找匹配项。在正则表达式中,这?意味着前一个字符可以出现 0 次或 1 次。为了匹配文字?,您必须将其转义:

gsub(/\?/, "")

另请参阅有关gsub的 ruby​​ 文档

于 2012-11-04T08:08:01.467 回答
2

最后,正如上面提到的,/reg/"str"只表示一个字符串时,它表示正则表达式。您的目标是从字符串中删除?和。.正则表达式将完成这项工作:

gsub(/[?.]/, '')

您可以在此处阅读有关 ruby​​ regexp的更多信息。在我的示例/[abc]/中将匹配单个字符aorbc

于 2012-11-04T08:26:50.630 回答
1

前者是从字面上找到“?” 字符并替换它们,而后者是查找给定字符的 0 或 1 的出现。?对于正则表达式具有特殊含义,您可以使用/.

于 2012-11-04T08:07:03.930 回答