Regex 正则集减法
我必须找到所有以//MARK开头但不包含sting abcd的字符串。 我试过几次,但都失败了。这里最大的问题是标记集合A-BRegex 正则集减法,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[ \t]*[:]*[ \t]*[^\n(?P=ABCD)]*)
它应与以下方面合作:
//MARK: MarABdasdsd
//MARK sthIsHere
但不应匹配:
//MARK: great marABCDE
我能找到所有的病例,但不知道如何移除这个病例。我只能使用单个正则表达式。
我知道很多帖子
有什么想法吗?我想您是用使用ICU正则表达式风格的Swift编码的。它支持lookaheads,因此,基于令牌的正则表达式可以工作:
//[ ]*MARK[ \t]*:*[ \t]*(?:(?!ABCD)[^\n])*$
见
正则表达式匹配
-两个/
/
-0+空格[]*
-一个字面单词MARK
MARK
-0+空格或制表符,后跟0+冒号,后跟0+制表符或空格[\t]*:*[\t]*
-匹配任何不启动(?:(?!ABCD)[^\n])*
序列的非换行符的标记ABCD
-字符串结束$
\/\/[]*标记[\t]*:*[\t]*(?:(?!ABCD)[^\n])*$
。是iOS版的吗?:)它用于使用SwiftLiint在特定标记上发出警告。我会检查答案并写下是否有效:)有效:)非常感谢!