在正则表达式iOS

时间:2015-06-11 06:39:24

标签: ios regex nsregularexpression

有谁理解这(([A-Za-z\\s])+)\\?的含义是什么? 我想知道为什么它应该是"\\s""\\"

如果我输入了"\s",Xcode就不会理解,如果我输入"\?",它就不会与"?"匹配。

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

3 个答案:

答案 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元字符用于查找空白字符。

Refer this