我正在研究吉他和弦转置器,所以从给定的文本文件中,我想识别吉他和弦。例如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个解决方案,让我们知道哪一个最好。 –