正则表达式 - 线上任何地方的负向后看

2024-04-21

仅当同一行中前面没有特定字符时,如何匹配模式?

我有以下正则表达式代码:

pattern = @"(?<=^|[\s.(<;])(?<!//)(" + Regex.Escape(keyword) + @")(?=[\s.(>])";
replacement = "<span style='" + keywordStyle + "'>$1</span>";
code = Regex.Replace(code, pattern, replacement);

我想添加一个条件,仅在同一行前面没有 2 个斜杠时才匹配(C# 注释)。

我尝试了一下,并修改了模式:

pattern = @"(?<!\/\/)(?<=^|[\s.(<;])(?<!//)(" + Regex.Escape(keyword) + @")(?=[\s.(>])";

但显然这只有在 2 个斜杠是 2 个字符的情况下才有效就在之前关键字。

所以这个模式不会匹配“//foreach”,但会匹配“//foreach”。

在这种情况下可以使用负回顾,或者除了负回顾之外我可以通过其他方式实现这一点吗?

谢谢。

EDIT:

估计是我表达得不够清楚。重申一下我的问题:

我正在研究语法突出显示,我需要找到 c# 关键字的匹配项,例如“foreach”。但是,我还需要考虑由 2 个斜杠定义的注释。我不想匹配关键字“foreach”,如果它是注释的一部分(在同一行上的任何地方都有两个斜杠。

在这种情况下,负向后查找对我没有帮助,因为斜杠不一定位于关键字之前,例如“// some text foreach” - 我不希望此 foreach 匹配。

所以,我的问题是:如何修改我的模式,使其仅在同一行前面没有两个斜杠的情况下匹配?

希望我的问题现在清楚了。


稍微简化一下你的正则表达式模式,下面的怎么样?它利用“//”上的非贪婪匹配加上 0 个或更多字符。

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

正则表达式 - 线上任何地方的负向后看 的相关文章

随机推荐

  • 在 np.array 上应用 cv2.boundingRect

    如何申请cv2 boundingRect to a np array点 以下代码会产生错误 points np array 1 2 3 4 dtype np float32 import cv2 cv2 boundingRect point
  • 捆绑安装未从我的更新后挂钩运行

    我已经为我的项目设置了更新后挂钩 我有一个我推送到的裸存储库 var git myproject 以及一个运行我的应用程序的实时存储库 var www myproject 我还包括bundle install and bundle exec
  • 如何在 Ubuntu 的 headless chrome 中启用 WebGL?

    如何在 Ubuntu 14 的 headless chrome 中启用 webgl 或安装 webgl 我尝试安装 libosmesa6 但这没有帮助 有人可以指出我正确的方向吗 我想使用 webgl 来处理无头 chrome 和 sele
  • 从网站批量下载图像的最佳方法

    我将从网站下载大量图像 20 000 到我的服务器 并且我正在尝试找出执行此操作的最佳方法 因为有太多图像需要下载 目前我有下面的代码可用于测试 但是有更好的解决方案还是我应该使用一些软件来做到这一点 foreach products as
  • Java Scanner 输入与 if else 语句

    你好 我是java新手 正在尝试做一个测验来练习 我想提出一个问题 用户必须将类别中的单词组合成对 如A1 B4 C3 D2 我现在所做的是使用 if else 语句来检查输入是否是正确答案 但它仅适用于 1A 对于其他人 我可以做 6 个
  • Google 日历 v3 错误“请求的最短修改时间距过去太远。[410]”

    我们使用 Google Calendar v3 API 来返回自某个时间点以来已更新的用户事件列表 在 v2 API 中 设置过去的日期没有限制 如果我们将 UpdatedMin 设置为太早的日期 例如 2 个月 则会引发错误 所请求的最短
  • Google Analytics 的两个单独的脚本标签?

    有谁知道为什么 Google Analytics 需要两个单独的脚本标签 具体来说 他们的说明建议用户将以下代码片段嵌入网页中以进行跟踪
  • 使用 .NET 加密 API 进行 RSA 盲签名?

    我想实施一个RSA 盲签名 http en wikipedia org wiki Blind signature Blind RSA signatures在 NET中 有什么办法可以使用标准System Security Cryptogra
  • 是否可以将同一个 DLL 放入控制台应用程序和 NuGet 依赖项中?

    我有一个面向 NET Standard 1 5 的项目 该项目在 NuGet 上部署为多个 DLL 该项目是从 Java 移植的 项目内部的一些类是静态的Main 应该从命令行运行的方法 在 NET Core中似乎有编译DLL的2种方法 h
  • AngularJS中.save和$save到资源的区别

    我见过两者都调用的代码 save and save到角度的 resource 有什么区别以及什么时候使用 最好的解释 例子 by writing id id we want the id to be taken from id parame
  • 如果 Web 应用程序通过 Azure 应用程序服务托管,如何读取证书

    我有一个 asp net core web api app1 应用程序 它正在调用另一个 asp net core web api app2 我正在考虑将 app1 作为守护应用程序 我想使用证书而不是应用程序机密来跟踪客户端凭据 http
  • 具有多个编辑按钮的 SwiftUI 表单

    试图有一个Form有多个部分 每个部分Section与它自己的EditButton 如何触发Section进入 编辑模式 而不触发中的所有部分Form 如所附 gif 所示 如何追踪EditButton在一定的Section被触发 以便Bu
  • 快速文件读取

    如果我是对的 在 Linux 上 在C C gcc g 可以使用以下命令从常规文件中读取数据read 2 or mmap 2 系统调用 两个问题 做read系统调用的使用mmap内部 什么时候第一个比第二个快 反之亦然 如果您按顺序读取文件
  • ansible安装node.js版本6

    要安装 Node 6 x 版本 请执行以下命令 curl sL https deb nodesource com setup 6 x sudo E bash sudo apt get install y nodejs 现在我到底该如何在an
  • Terraform 有条件地应用生命周期块

    您可以有条件地将生命周期块应用到 Terraform 0 12 中的资源吗 例如 如果我想根据传递给模块的参数将此块添加到 AWS ASG 资源 lifecycle ignore changes target group arns 不 你不
  • Select2 - Ajax 搜索 - 记住最后的结果

    我正在使用 Select2 3 5 1 使用这个插件我可以成功加载远程数据 然而 我今天来这里是为了提出一个问题来改进这个搜索 以下是逐步了解我想要做什么的步骤 设置一个具有远程数据加载功能的 Select2 使用 ajax 单击 Sele
  • 为什么 OCaml 不允许函数匹配? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我可以在atom中隐藏打字稿自动生成的.js和.map.js文件吗?

    有谁知道 Atom 中是否有用于隐藏或分组自动生成的文件的插件 选项 我想要隐藏 分组的文件是typescript compiler自动生成 js and map js files 如果可能的话 Visual Studio 风格的分组是最好
  • 无法加载文件或程序集“Microsoft.ReportViewer.ProcessingObjectModel,版本=10.0.0.0”

    使用 MVC5 和 rdlc 生成 pdf 它在本地主机中工作正常 但是当我尝试生成报告时将应用程序部署到服务器时 出现错误 某些组件丢失 webapp 应用程序中的服务器错误 Could not load file or assembly
  • 正则表达式 - 线上任何地方的负向后看

    仅当同一行中前面没有特定字符时 如何匹配模式 我有以下正则表达式代码 pattern lt s lt replacement span 1 span code Regex Replace code pattern replacement 我