有谁理解这(([A-Za-z\\s])+)\\?
的含义是什么?
我想知道为什么它应该是"\\s"
和"\\"
?
如果我输入了"\s"
,Xcode就不会理解,如果我输入"\?"
,它就不会与"?"
匹配。
我搜索了很多,但我找不到解决方案。有人知道吗?
答案 0 :(得分:1)
实际的正则表达式为(([A-Za-z\s])+)\?
。这匹配一个或多个字母和空格字符,后跟一个问号。 \
在这里有两个不同的含义。在第一个实例中,\s
具有固定含义,代表任何空格字符。在第二个实例中,\?
表示文字问号字符。逃逸是必要的,因为问号意味着一个或没有先前的问题。
你不能在C代码的字符串文字中输入这样的正则表达式。 C也使用反斜杠字符进行一些转义。例如,"\n"
被转换为仅包含换行符的字符串。还有一些其他具有特殊含义的转义序列。如果反斜杠后面的字符没有特殊含义,则只删除反斜杠。这意味着如果你想在你的字符串中有一个退格键,你必须写两个。
因此,如果您根据需要编写正则表达式字符串,则会得到不同的结果,因为它将被解释为(([A-Za-zs])+)?
,其含义完全不同。因此,当您在ObjC(或任何其他基于C语言)字符串文字中编写正则表达式时,必须将所有反斜杠字符加倍。
答案 1 :(得分:0)
不确定ios但是java中也发生了同样的事情。 \
是java的转义字符,c也是如此,当你输入\s
时,java读取\作为转义字符。
将其视为您想要打印\
您需要做什么。
您必须输入\\
。现在,第一个\将作为java的转义字符,第二个将被打印。
我认为它也应该是ios的相同概念。
所以如果你想要输入\ s,如果你想要\,你输入\\。
答案 2 :(得分:-4)
\s
元字符用于查找空白字符。