正規表現を含むXML文書があるので(\でエスケープする必要はありません)。基本的に私は音楽のコード記号と一致するようにしようとしているが、この正規表現はうまく動作しますが、ハッシュと一致することを拒否:ハッシュ文字(#)と正規表現のマッチング
\b[A-G](m|b|\#|sus|\d)*?\b
正規表現を含むXML文書があるので(\でエスケープする必要はありません)。基本的に私は音楽のコード記号と一致するようにしようとしているが、この正規表現はうまく動作しますが、ハッシュと一致することを拒否:ハッシュ文字(#)と正規表現のマッチング
\b[A-G](m|b|\#|sus|\d)*?\b
問題は\b
は、ワード境界アンカーは、英数字のみと非英数字の間で一致していることですしたがって、それは#
の後にマッチしません(それ自体に英数字が続く場合を除きます)。
使用
\b[A-G](?:m|b|#|sus|\d)*(?:\b|(?<=#))
のいずれか、#
をエスケープする必要はありません。
EDITは:(私はそれがあるべきだと思うと)よりよい
現在、あなたがが、いくつかのコードを一致していないことを意図した機能を再現するために正規表現を変更しました。方法について
\b[A-G](?:add|maj|j|m|-|b|#|sus|\d|°)*(?:\b|(?<=[#°-]))
そのように、あなたはこれらのすべてを一致させることができます。
A7
Abm7
A#m7sus4
A7b9#13
Amaj7#11
A#°
Abj7add13
私は改善の余地はしかし、まだそこにあると思います。
どのような正規表現エンジンを使用していますか?おそらくハッシュをエスケープしてはいけません。 – marcog
私はその正規表現エンジンを信じていますが、XMLファイルです。 – Miguel