2015-06-11 3 views
1

Кто-нибудь знает, что это такое (([A-Za-z\\s])+)\\??
Интересно, почему это должно быть "\\s" и "\\"?Двойной \ в регулярном выражении iOS

Если я ввел "\s", Xcode просто не понял, и если бы я ввел "\?", он просто не соответствует "?".

У меня много googled, но я не нашел решения. Кто-нибудь знает?

+0

извините, что это (([A-Za-z \\ s]) +) \\? – bigCan

ответ

1

Настоящее регулярное выражение - (([A-Za-z\s])+)\?. Это соответствует одному или нескольким буквам и пробельным символам, за которыми следует знак вопроса. Здесь \ имеет два разных значения. В первом случае \s имеет фиксированное значение и обозначает любые символы пробела. Во втором случае \? означает буквенный знак вопроса. Выделение необходимо, так как знак вопроса означает одно или ни одно из предыдущих в противном случае.

Вы не можете набирать ваше регулярное выражение, как это, в строковом литерале в коде C. C также выполняет некоторое экранирование с использованием символа обратной косой черты. Например, "\n" переводится в строку, содержащую только символ новой строки. Существуют и другие escape-последовательности со специальными значениями. Если символ после обратной косой черты не имеет особого значения, обратная косая черта просто удаляется. Это означает, что если вы хотите иметь одно backspace в своей строке, вам нужно написать два.

Итак, если вы написали свою строку регулярных выражений, как хотите, вы получите разные результаты, так как она будет интерпретирована как (([A-Za-zs])+)?, которая имеет совершенно другое значение. Поэтому, когда вы пишете регулярное выражение в строковом литерале ObjC (или любом другом языке C), вы должны удвоить все символы обратной косой черты.

+0

Большое спасибо. Это беспокоит меня целый день. Ваше объяснение – bigCan

+0

Ваши объяснения потрясающие! – bigCan

0

не уверен о ios но такой же предмет бывает в java. \ - символ escape для java, и c также так, когда вы вводите \s java читает \ в качестве escape-символа.

думаю, что вы хотите напечатать \, что вам нужно будет сделать. вам нужно будет ввести \\. теперь first \ будет работать как escape-символ для java, а второй будет напечатан.

Я думаю, что это тоже должно быть для ios.

поэтому, если вы хотите \ s, вы печатаете \ s, если хотите \ вы вводите \\.

+0

Спасибо за ваш ответ – bigCan

-4

Метасимвол \s используется для поиска символа пробела.

Refer this!