我一直在编写模式以找到常见的首字母缩略词,并且遇到了从一组候选人中选择给定角色的相同角色的便捷匹配事件。
例如,我们想要匹配自由软件基金会的所有变体,即。 FSF。我们想要匹配F.S.F.或FSF或F S F或可能是凌乱的版本F.SF和可能的情况。被/ ie取代。 F / S / F。看起来像这样:
\bF[\.\/ ]?S[\.\/ ]?F[\.\/]?(?!\S)
但是,我们可能不想匹配F.S / F.所以我们希望分隔符在同一匹配(。或/或)中保持一致。没有使用替代方法,有没有办法解决这个问题?
\b(F[\.]?S[\.]?F[\.]?|F[\/]?S[\/]?F[\/]?|F[ ]?S[ ]?F)(?!\S)
答案 0 :(得分:2)
\bF([^a-zA-Z0-9])?S\1?F\1?\b
你可以尝试一下。参见演示。
https://regex101.com/r/tX2bH4/45
第二个分隔符与第一个分隔符相同,因为它首先被捕获并使用\1
进行引用。
注意匹配尾随分隔符使用:
(?:\bF([^a-zA-Z0-9])S\1F\1?)|(?:\bFSF\b)