2016-12-01 81 views
2

我想找到我的Xcode項目的所有力量展開變量。例如任何事,它類似於:正則表達式模式來查找迫使展開變量

variableName!.property 

variableName!, 

variableName! : otherVariable 

variableName!) 

或以武力任何其他類似事件解開變量。什麼樣的正則表達式模式可以用於Xcode搜索?

+1

我不認爲有100%的滿足您的需求的任何正則表達式。如果你需要這種精度水平(即你正在編寫一個自動工具),你需要深入研究[Clang Abstract Syntax Tree](http://clang.llvm.org/docs/IntroductionToTheClangAST.html) –

回答

1

這將只搜索有效的變量名稱(以字母開頭的字母數字字符串),然後是!,然後是空格,製表符,換行符或句點,逗號,冒號或右括號。這種搜索也排除發現的try!as!實例。

([A-z]+[A-Za-z0-9]*(?<![(try)(as)])![.,:)\n\t\r ])

接下來的這個模式將匹配try!as!,如果你有興趣在尋找那些爲好。

([A-z]+[A-Za-z0-9]*![.,:)\n\t\r ])

應當注意這兩種模式也將匹配變量類型是力展開自選(一種常見的變量是力量解開被@IBOutlet S)

一種寫作真的好資源和測試正則表達式是regexr.com

+0

我用這個,但拿出了新的一行字符。感謝大家! – Tometoyou

0

你應該使用查找搜索.+!(\.|,| :|\))>正則表達式工具

+0

這也將在init階段調出已聲明爲解包的屬性,如'fileprivate var button:UIButton!',這是我不想要的。 – Tometoyou

+0

所以你只想匹配前面的4個案例? – CZ54

+0

4例,再加上任何其他類似的人(如果我忘了的話)不包括我剛纔提到的一個。 – Tometoyou

2

不防呆(這將需要一個完整的閱讀斯威夫特語法),但不夠好,在大多數情況下:

\w[\w\d]*! 

中當然,你可以簡單地搜索! - 一對夫婦只採用了比力展開其他還有:陰性(!=)和布爾(!valid)。您可以在搜索中搜索一些字符串文字,但除非您正在編寫自動工具,否則它並不重要。

+0

在增加的情況下!也用於不平等和測試布爾值 – geraldWilliam

+0

@geraldWilliam謝謝。更新我的答案 –