正则表达式中的双 \\ iOS

Double \\ in regular expression iOS

有人明白(([A-Za-z\s])+)\?是什么意思吗?
我想知道为什么它应该是 "\s""\" ?

如果我输入"\s",Xcode就是不明白,如果我输入"\?",它就是不匹配"?".

我用谷歌搜索了很多,但没有找到解决方案。有人知道吗?

不确定 ios 但同样的事情发生在 java。 \ 是 java 的转义字符,当您键入 \s 时,c 也是如此,java 读取 \ 作为转义字符。

把它想象成你想打印一个\你必须做什么。 您必须输入 \。现在第一个 \ 将用作 java 的转义字符,第二个将被打印。

我想 ios 也应该是同一个概念。

因此,如果您想要 \s,请键入 \s,如果您想要 \,请键入 \\。

实际的正则表达式是 (([A-Za-z\s])+)\?。这匹配一个或多个字母和白色 space 字符后跟一个问号。 \ 在这里有两种不同的含义。首先 \s 具有固定含义,代表任何白色 space 字符。在第二种情况下,\? 表示文字问号字符。转义是必要的,因为问号表示前一个或 none 否则。

尽管如此,您不能在 C 代码的字符串文字中键入这样的正则表达式。 C 还使用反斜杠字符进行一些转义。例如 "\n" 被翻译成一个只包含一个换行符的字符串。还有其他一些具有特殊含义的转义序列。如果反斜杠后面的字符没有特殊含义,则反斜杠将被删除。这意味着如果你想在你的字符串中有一个 backspace 你必须写两个。

因此,如果您按照自己的意愿编写正则表达式字符串,您会得到不同的结果,因为它会被解释为 (([A-Za-zs])+)?,这具有完全不同的含义。因此,当您使用 ObjC(或任何其他基于 C 的语言)字符串文字编写正则表达式时,您必须将所有反斜杠字符加倍。

\s 元字符用于查找空白字符。

Refer this!