我必须找到以// MARK开头的所有字符串,它们不包含刺痛ABCDS。 我有一些试验,但都失败了。这里最大的问题是标记集A-B。
(\/\/[ ]*MARK[ \t]*[:]*[ \t]*[^\n(?P=ABCD)]*)
它应该与:
一起使用//MARK: MarABdasdsd
//MARK sthIsHere
但不应该匹配:
//MARK: great marABCDE
我能够找到所有案例,但不知道如何删除这个案例。我只能使用单个正则表达式。 我知道很多帖子negate the whole regex pattern when negative lookaround doesn't work
有什么想法吗?
答案 0 :(得分:1)
我假设你在使用ICU正则表达式风格的Swift编码。它支持前瞻,因此,基于调和贪婪令牌的正则表达式将起作用:
//[ ]*MARK[ \t]*:*[ \t]*(?:(?!ABCD)[^\n])*$
请参阅regex demo
正则表达式匹配
//
- 两个/
[ ]*
- 0+空格MARK
- 字面词MARK
[ \t]*:*[ \t]*
- 0 +空格或制表符后跟0 +冒号后跟0 +制表符或空格(?:(?!ABCD)[^\n])*
- 与未启动ABCD
序列的任何非换行符号匹配的驯化贪婪令牌$
- 字符串结束。