Поиск по XCode: Как создать совпадающее регулярное выражение (regular expression) для выбора правильных файлов

#ios #regex #xcode #search #xcode4

#iOS #регулярное выражение #xcode #Поиск #xcode4

Вопрос:

У меня есть проект с большим количеством target в XCode. Я хочу настроить свой поиск и выбрать только файлы одной цели.

В моей программе есть файлы с кодом таким образом:

  1. Глобальные файлы, используемые всеми целевыми объектами
  2. Глобальный для устройств (iPad или iPhone)
  3. Специфичный для этой цели

Итак, для случая 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