“AND NOT”运算的正则表达式[重复]

2023-12-31

我正在寻找一个通用的正则表达式构造来匹配模式 x 中的所有内容,除了匹配模式 y 之外。这很难完整而简洁地解释......看实质性非暗示 http://en.wikipedia.org/wiki/Material_nonimplication以获得正式的定义。

例如,匹配任何单词字符 (\w)除了“p”。请注意,我从一个较大的集合(所有单词字符)中减去一个较小的集合(字母“p”)。我不能只说[^p]因为这没有考虑到更大的仅限单词字符的限制集。对于这个小例子,当然,我可以手动重建类似的东西[a-oq-zA-OQ-Z0-9_],这是一个痛苦但可行的方法。但我正在寻找一种更通用的构造,以便至少大的正集可以是更复杂的表达式。喜欢比赛((?<=(so|me|^))big(com?pl{1,3}ex([pA]t{2}ern)除非以“My”开头。

Edit:我意识到这是一个不好的例子,因为在开始或结束时排除某些内容是负向前看和向后看表达式起作用的情况。 (波西米亚人我仍然为你的说明投了赞成票)。那么...排除中间某处包含“My”的匹配怎么样?...我仍然在寻找一个通用的构造,就像下面的伪sql的正则表达式等价物

select [captures] from [input]
where (
    input MATCHES [pattern1]
    AND NOT capture MATCHES [pattern2]
)

如果答案是“它不存在,这就是为什么......”我也想知道。

Edit 2:如果我想定义自己的函数来执行此操作,则类似于(这里是 C# LINQ 版本):

public static Match[] RegexMNI(string input, 
                               string positivePattern, 
                               string negativePattern) {
    return (from Match m in Regex.Matches(input, positivePattern)
            where !Regex.IsMatch(m.Value, negativePattern)
            select m).ToArray();
}

我仍然想知道是否有一个本机正则表达式构造可以做到这一点。


这将匹配任何字符is一个词并且是not a p:

((?=[^p])\w)

要解决您的示例,请在输入中的任何位置对“My”使用否定前瞻,即(?!.*My):

^(?!.*My)((?<=(so|me|^))big(com?pl{1,3}ex([pA]t{2}ern)

注意输入开始的锚点^这是使其发挥作用所必需的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“AND NOT”运算的正则表达式[重复] 的相关文章

随机推荐

  • Django:使用排除的字段验证 ModelForm 中的 unique_together 约束

    我有一个表格 class CourseStudentForm forms ModelForm class Meta model CourseStudent exclude user 对于具有一些复杂要求的模型 class CourseStu
  • 给定的二叉树是否完整[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定一个二叉树 编写一个函数来检查给定的二叉树是否是完全二叉树 完全二叉树是这样的二叉树 除了最后一层之外 每一层都被完全填满 并且所有节
  • NHibernate Criteria 根据另一个表中的 itemid 的分组依据和总和来选择项目

    public class SearchText public virtual int Id get set public virtual string Text get set public class SearchTextLog publ
  • iOS 8+ 远程通知功能始终启用

    仅适用于 iOS gt 8 在我的 AppDelegate 中 我注册用户通知 如下所示 BOOL application UIApplication application didFinishLaunchingWithOptions NS
  • 从动态库调用 fprintf (c++)

    我正在创建一个包含日志记录类的 Windows DLL 库 该类中的日志函数只是像这样调用 fprintf 来进行测试 fprintf stderr 调试 s n 你好 现在 如果我从其他项目 使用该库 中的任何文件中的任何函数使用它 这个
  • 更改字体很棒的图标中的字体大小

    我正在使用 parallax pro genesis 子主题 因此我正在小部件区域内工作 我不确定我是否以正确的方式处理这个问题 但我尝试通过在小部件区域中执行此操作 在很棒的字体图标下进行书写 i class fa fa code fa
  • 当“try .. except IOError”没有捕获FileNotFoundError时如何处理它?

    如何捕获 python 3 上的错误 我用谷歌搜索了很多 但似乎没有一个答案有效 文件 open txt 不存在 因此应该打印 e errno 这就是我现在尝试的 这是我定义的函数 try with open file r as file
  • Python 中的重复排列

    我想迭代一个的所有顶点n尺寸为 1 的维度立方体 我知道我可以做到这一点itertools product如下 gt gt gt n 3 gt gt gt for j in it product 0 1 repeat n print j 0
  • 在钥匙串访问中生成证书签名请求:使用哪个私钥?

    我想知道 Mac OS X Snow Leopard 现在的 Lion 中使用哪个私钥 Keychain Access 每当我使用该应用程序创建 CSR 时 它甚至不要求使用私钥 那么它使用哪一个呢 我可以想象它使用了所选的一个 if您已在
  • 捕获两个重叠元素上的鼠标悬停事件

    所以我有一个 d3 图表rect覆盖以固定十字准线元素mouseover事件 在覆盖层下 我有其他显示数据的矩形mouseover事件处理程序也是如此 但是覆盖层被阻塞mouseover事件在下面的子矩形上形成触发器 let chartWi
  • C 中的静态数组初始化

    考虑以下陈述 typedef struct int member1 int member2 Custom t void ISR void static Custom t struct1 SOME CONSTANT 如何在 C 编程中将所有
  • 在 R 中读取以多个空格作为分隔符的文本文件

    我有一个大数据集 由大约 94 列和 300 万行组成 该文件具有单个和多个空格作为列之间的分隔符 我需要在 R 中读取该文件中的一些列 为此 我尝试使用 read table 以及可以在下面的代码中看到的选项 代码粘贴在下面 Defini
  • iOS 应用程序中的 Airplay 镜像

    我查看了几个链接并阅读了 Apple 文档 但没有得到任何在外部设备上镜像应用程序内容的分步说明 他们所解释的只是如何在识别到外部屏幕时显示新窗口 在我的应用程序中 我只需要在支持 Airplay 的设备上显示应用程序中显示的当前屏幕 有一
  • bash:expect 可以处理多个密码提示吗?

    我目前正在使用 Expect 来传递密码 这样我的脚本就可以自动运行 而无需我坐下来一遍又一遍地输入相同的密码 重要提示 请不要评论这有多大的安全风险或我应该如何使用 ssh 密钥 如果可以的话我会使用这些密钥 但我必须使用的设置不允许这样
  • 我可以生成自定义编译器错误吗?如果是这样,怎么办?

    这就是我想做的 我有一个项目必须在某些版本的 Delphi 或更高版本中编译 我想使用条件编译器指令来测试 Delphi 版本 然后使用自定义消息生成自定义编译器错误 如果不可能出现错误 能够生成自定义编译器警告或提示也足够了 当然 我可以
  • IIS 7 通过 HTTPS 进行 POST 是否有限制?

    我正在 PHP 中构建一个 Web 服务 用于处理通过 SOAP 请求从 Windows 应用程序接收到的数据 Windows 应用程序有点像黑匣子 但它会生成很长的消息流 然后将它们作为单个 SOAP 请求进行发布 使用 HTTP 可以正
  • 来自 c# 的 PInvoke c++ dll - 尝试加载格式不正确的程序。 (HRESULT 异常:0x8007000B)

    尝试使用 Dll 导入从 C 访问旧的 C DLL 已经在网上搜索了大约4天 但没有成功 我正在尝试使用来自 asp net mvc 3 网站 net 4 的 c dll 我已将平台目标更改为 x86 我已在 iis 中的应用程序池上将 启
  • 在 Xcode 4.5 中,“显示实时问题”不再起作用

    我发现 Xcode 在我编写代码时显示编译器警告非常有用 例如 如果我写了 ldksjfksdj 我希望立即看到一个红色感叹号图标和警告 use of undeclared identifier 但现在使用 Xcode 4 5 我只能在编译
  • 有没有使用 WebDav 的 Dreamweaver 开源替代方案?

    我们希望使用 WebDav 来处理我们的模板 但无法使用 Dreamweaver 有什么建议么 谢谢你 任何文本编辑器都应该在这里完成工作 我推荐崇高文本2 http www sublimetext com 2 or 记事本 http no
  • “AND NOT”运算的正则表达式[重复]

    这个问题在这里已经有答案了 我正在寻找一个通用的正则表达式构造来匹配模式 x 中的所有内容 除了匹配模式 y 之外 这很难完整而简洁地解释 看实质性非暗示 http en wikipedia org wiki Material nonimp