Objective c 正则表达式块否定
我想找出一个没有出现特定标记的字符串,例如: [\w]+ 其中不需要的将被解释为a、d、e、n、t和u。但我想要的是块字符串。我如何用正则表达式表达它? 我尝试过消极前瞻,但不起作用: .+?!不需要的+ 匹配…中的所有字符,但前提是表达式不以任何字符开头Objective c 正则表达式块否定,objective-c,regex,regex-negation,nsregularexpression,Objective C,Regex,Regex Negation,Nsregularexpression,我想找出一个没有出现特定标记的字符串,例如: [\w]+ 其中不需要的将被解释为a、d、e、n、t和u。但我想要的是块字符串。我如何用正则表达式表达它? 我尝试过消极前瞻,但不起作用: .+?!不需要的+ 匹配…中的所有字符,但前提是表达式不以任何字符开头 匹配…中的所有字符,但前提是表达式不以任何字符开头。cHao,非常感谢您回答这个难题。然而,答案也很难。这个解决方案让我大吃一惊。只是想看看我的理解,尽管是命令?!不需要的。或不需要,它不会改变效果,对吗?为什么?:+被使用?它是否意味着除不
匹配…中的所有字符,但前提是表达式不以任何字符开头。cHao,非常感谢您回答这个难题。然而,答案也很难。这个解决方案让我大吃一惊。只是想看看我的理解,尽管是命令?!不需要的。或不需要,它不会改变效果,对吗?为什么?:+被使用?它是否意味着除不需要的字符外,任何字符位于单个字符的位置??:。。。将内容分组,但不捕获它。如果你不在乎捕获,你可以说。。。相反,但这有点浪费。无论哪种方法,要点都是使+应用于整个内容,这样它将匹配不是表达式开头的任何字符。至于整个过程,它的工作原理是这样的:它尝试匹配的每个字符,它首先对第一个字符进行一个负的前瞻性检查?!。。。以确保表达式不匹配。如果没有,则它会抓取该字符,并使用下一个字符重试。没有?:。。。或者可选地,…,则+将只应用于.,并且您将最终匹配任何不以不需要的字符串开头的字符串。但是,结果匹配在第一个字符之后的任何地方仍然可能有不需要的字符。这就是为什么您要在每个位置进行测试,因此,您要将前瞻和预测分组。一起。更改前向和后向的顺序。至少在一个主要方面会影响结果-因为。?!。。。如果您抓取一个字符,然后查找不需要的字符,则该模式仍可能出现在字符串的开头,而您不会看到它。这就是为什么你在抓到一个字符之前要检查一下。非常感谢。我现在知道它是怎么工作的了。你真可爱。这个问题我已经想了两年了。赵,非常感谢你回答这个难题。然而,答案也很难。这个解决方案让我大吃一惊。只是想看看我的理解,尽管是命令?!不需要的。或不需要,它不会改变效果,对吗?为什么?:+被使用?它是否意味着除不需要的字符外,任何字符位于单个字符的位置??:。。。将内容分组,但不捕获它。如果你不在乎捕获,你可以说。。。相反,但这有点浪费。无论哪种方法,要点都是使+应用于整个内容,这样它将匹配不是表达式开头的任何字符。至于整个过程,它的工作原理是这样的:它尝试匹配的每个字符,它首先对第一个字符进行一个负的前瞻性检查?!。。。以确保表达式不匹配。如果没有,则它会抓取该字符,并使用下一个字符重试。没有?:。。。或者可选地,…,则+将只应用于.,并且您将最终匹配任何不以不需要的字符串开头的字符串。但是,结果匹配在第一个字符之后的任何地方仍然可能有不需要的字符。这就是为什么您要在每个位置进行测试,因此,您要将前瞻和预测分组。一起。更改前向和后向的顺序。至少在一个主要方面会影响结果-因为。?!。。。如果您抓取一个字符,然后查找不需要的字符,则该模式仍可能出现在字符串的开头,而您不会看到它。这就是为什么你在抓到一个字符之前要检查一下。非常感谢。我现在知道它是怎么工作的了。你真可爱。这个问题在我脑子里已经想了两年了。
<xyz>(?:(?!unwanted).)+</xyz>