#ios #regex #xcode #search #xcode4
#iOS #регулярное выражение #xcode #Поиск #xcode4
Вопрос:
У меня есть проект с большим количеством target в XCode. Я хочу настроить свой поиск и выбрать только файлы одной цели.
В моей программе есть файлы с кодом таким образом:
- Глобальные файлы, используемые всеми целевыми объектами
- Глобальный для устройств (iPad или iPhone)
- Специфичный для этой цели
Итак, для случая 1 имена файлов указаны следующим образом:
SCName1.m
SCOtherGlobal.m
Случай 2 — это:
SCiPhoneFile1.m
SCiPhoneFile2.m
SCiPadFile.m
SCiPadFile2.m
Случай 3:
SCiPhoneAAFile1.m
SCiPadABFile1.m
SCiPadABOtherFile.m
Итак, для одной цели я хочу создать регулярное выражение для поиска файлов с:
SC* OR SCiPhone* OR SCiPhoneAA*
Более полным способом является
(SC* AND NOT(SCiPhone*) AND NOT(SCiPad*)) OR
(SCiPhone* AND NOT(SCiPad*) AND NOT(SCiPhoneAB*)) OR
(SCiPhoneAA*)
Я новичок в регулярных выражениях, и мое выражение не работает. Моя логика верна? Кто-нибудь знает, как создать правильное регулярное выражение?
Ответ №1:
Поскольку вы хотите сопоставить имена файлов, которые имеют общие элементы, я думаю, что наиболее эффективный способ (если не единственный способ) сделать это — использовать исключение (то есть файлы, которые никоим образом не относятся к iPad, или файлы, которые не относятся к устройству iPhoneAB, но любые другие подойдут.
Итак, для этих входных данных:
SCName1.m
SCOtherGlobal.m
SCiPhoneFile1.m
SCiPhoneFile2.m
SCiPadFile.m
SCiPadFile2.m
SCiPhoneAAFile1.m
SCiPhoneABFile2.m
SCiPadABFile1.m
SCiPadABOtherFile.m
Я могу сопоставить эти файлы:
SCName1.m
SCOtherGlobal.m
SCiPhoneFile1.m
SCiPhoneFile2.m
SCiPhoneAAFile1.m
Используя это выражение (которое использует отрицательный прогноз):
SC(?!iPad|iPhoneAB)[^.]*.m
Я надеюсь, что это сработает для вас! Кроме того, я могу разбить это для вас, если вы хотите: D