Regex 正则集减法

Regex 正则集减法,regex,regex-negation,regex-lookarounds,swiftlint,Regex,Regex Negation,Regex Lookarounds,Swiftlint,我必须找到所有以//MARK开头但不包含sting abcd的字符串。 我试过几次,但都失败了。这里最大的问题是标记集合A-B (\/\/[ ]*MARK[ \t]*[:]*[ \t]*[^\n(?P=ABCD)]*) 它应与以下方面合作: //MARK: MarABdasdsd //MARK sthIsHere 但不应匹配: //MARK: great marABCDE 我能找到所有的病例,但不知道如何移除这个病例。我只能使用单个正则表达式。 我知道很多帖子 有什么想法吗?我想您是用使用

我必须找到所有以//MARK开头但不包含sting abcd的字符串。 我试过几次,但都失败了。这里最大的问题是标记集合A-B

(\/\/[ ]*MARK[ \t]*[:]*[ \t]*[^\n(?P=ABCD)]*)
它应与以下方面合作:

//MARK: MarABdasdsd
//MARK sthIsHere
但不应匹配:

//MARK: great marABCDE
我能找到所有的病例,但不知道如何移除这个病例。我只能使用单个正则表达式。 我知道很多帖子


有什么想法吗?

我想您是用使用ICU正则表达式风格的Swift编码的。它支持lookaheads,因此,基于令牌的正则表达式可以工作:

//[ ]*MARK[ \t]*:*[ \t]*(?:(?!ABCD)[^\n])*$

正则表达式匹配

  • /
    -两个
    /
  • []*
    -0+空格
  • MARK
    -一个字面单词
    MARK
  • [\t]*:*[\t]*
    -0+空格或制表符,后跟0+冒号,后跟0+制表符或空格
  • (?:(?!ABCD)[^\n])*
    -匹配任何不启动
    ABCD
    序列的非换行符的标记
  • $
    -字符串结束

什么是正则表达式?如果是常规正则表达式引擎,请使用
\/\/[]*标记[\t]*:*[\t]*(?:(?!ABCD)[^\n])*$
。是iOS版的吗?:)它用于使用SwiftLiint在特定标记上发出警告。我会检查答案并写下是否有效:)有效:)非常感谢!