正则表达式中的双 \\ 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!
有人明白(([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!