不在正则表达式中

Posted

技术标签:

【中文标题】不在正则表达式中【英文标题】:Not in regular expression 【发布时间】:2013-02-22 13:47:32 【问题描述】:

我正在尝试编写一个正则表达式模式来查找不在引号内的特定字符串。例如;

where value = '~foo'; //no match

where value = ~foo; //match

我可能会一直寻找,直到找到像这样的特定字符串;

^(?:(?!~).)*

但这并没有真正帮助我。如果我可以定义可以解决我的问题的文字字符串“not in”语句。

【问题讨论】:

【参考方案1】:

您可以使用这样的外观

(?<!')yourWordGoesHere(?!')

【讨论】:

不应该是负面的吗? (? 【参考方案2】:

这似乎有效:

~foo(?!(.(?<!'))*?')

结果:

【讨论】:

这只是测试末尾是否有引号。 @TimRogers 在什么情况下这不起作用?对我来说似乎很有效。 它将匹配~foo',但不匹配'~foo。取决于是否可以接受。 最后的模式有点乱,不知道你为什么在那里使用后视。你可以使用(?!.*') 我意识到这不是最有效的。当我回到办公桌前时,我会修复它。

以上是关于不在正则表达式中的主要内容,如果未能解决你的问题,请参考以下文章

注释的正则表达式,但不在“字符串”内/不在另一个容器中

在 C 代码中提取字符串的正则表达式(不在注释内)

正则表达式匹配逗号不在分组符号之间

如何在.net正则表达式中找到不在括号内的逗号?

MYSQL - 如果不在类别中并且正则表达式匹配内容,则:(添加到类别并从其他类别中删除)

自定义正则表达式不在客户端验证