我有一个包含正则表达式的XML文档(所以您不需要转义)。基本上,我正在尝试匹配音乐和弦符号,这个正则表达式工作得很好,但拒绝匹配散列:
\b[A-G](m|b|\#|sus|\d)*?\b发布于 2011-02-03 18:27:36
问题是,单词边界锚点\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不过,我想还有改进的余地。
https://stackoverflow.com/questions/4884915
复制相似问题