我正在研究吉他和絃轉置器,所以從給定的文本文件中,我想識別吉他和絃。例如G#,Ab,F#m等NSRegularExpression不匹配數字符號(#)
我快到了!由於數字符號(哈希標籤),我遇到了一些問題。
#
例如,您不能在您的正則表達式的數字符號。 NSRegularExpression不會用這個初始化:
let fail: String = "\\b[ABCDEFG](b|#)?\\b"
let success: String = "\\b[CDEFGAB](b|\\u0023)?\\b"
我不得不專門提供unicode字符。我可以忍受這一點。
然而,現在我有一個NSRegularExpression對象,它不會匹配這些(銳器=數字符號)時,我有一個文本行,如:
上午了Bb G#ÇDM FE
當它開始處理G#時,與第二個捕獲組相關的清晰度不匹配。 (即NSTextCheckingResult的第二個範圍的位置爲NSNotFound)注意,它適用於Bb ...它匹配'b'
我想知道我需要在這裏做什麼。看起來文檔並沒有涵蓋這個'#'的情況,事實上它有時用於正則表達式(我認爲與評論或某事有關)
有一件事情會很棒,那就是不必看爲#設置unicode標識符,但只是將其用作字符串「#」,然後將其轉換爲與模式很好地匹配。存在這樣的機會,實際上並不是與#關聯的代碼... ...
不是數字符號不同於尖銳符號嗎? –
讓我確切:你不想匹配'Eddd'? 'F#7'怎麼樣?根本原因很明確,但解決方案需要針對這種特定類型的輸入進行量身定製。並嘗試'「\\ b [CDEFGAB] [bm \ u0023]?(?!\\ w)」'。或'\\ b [CDEFGAB] [bm \ u0023]?+(?!\\ w)'。不知道這裏最適合什麼。請檢查。 –
請檢查我的2個解決方案,讓我們知道哪一個最好。 –