我有一个包含正则表达式的XML文档(因此您不需要使用\来转义)。基本上我正在尝试匹配音乐和弦符号,这个正则表达式工作正常,但拒绝匹配哈希:
\b[A-G](m|b|\#|sus|\d)*?\b
答案 0 :(得分:8)
问题在于,\b
(单词边界锚点)仅匹配字母数字和非字母数字字符,因此在#
之后不匹配(除非它本身后面跟着一个字母数字) )。
使用
\b[A-G](?:m|b|#|sus|\d)*(?:\b|(?<=#))
无需转义#
。
编辑:更改正则表达式以更好地重现预期的功能(我认为应该如此)
目前,你并没有匹配一些和弦;怎么样
\b[A-G](?:add|maj|j|m|-|b|#|sus|\d|°)*(?:\b|(?<=[#°-]))
这样,你可以匹配所有这些:
A7
Abm7
A#m7sus4
A7b9#13
Amaj7#11
A#°
Abj7add13
我想仍然有改进的余地。