正则表达式匹配除 C# 中引号中的字符串之外的所有内容

2024-01-02

我是 C# 中正则表达式使用的新手。 我想要一个正则表达式从给定列表中查找下一个关键字,但该关键字没有被引号包围。

例如 如果我有一个如下所示的代码:

            while (t < 10)
            {
                string s = "get if stmt";
                u = GetVal(t, s);
                for(;u<8;u++)
                {
                    t++;
                }

            }

我尝试使用正则表达式作为 @"(.*?)\s(FOR|WHILE|IF)\s" 但它给了我“if”作为下一个关键字。 然而,我想将 while 之后的下一个关键字作为“for”而不是用引号括起来的“if”。

可以使用正则表达式来完成吗?或者我必须使用传统编程?


尝试以下正则表达式(Edit: fixed).

(?:[^\"]|(?:(?:.*?\"){2})*?)(?: |^)(?<kw>for|while|if)[ (]

注意:由于此 RegEx 文字包含引号,因此您不能在字符串前使用 @ 符号。请记住,如果将任何 RegEx 特殊字符添加到字符串中,则需要适当地对它们进行两次转义(例如 \w)。确保在与 RegEx 匹配时还指定 Multiline 参数,以便插入符号 (^) 被视为新行的开头。

这尚未经过测试,但应该可以完成工作。如果有任何问题请告诉我。另外,根据您想在这里做的更多事情,我可能建议使用标准文本解析(非正则表达式),因为根据您想从代码中提取多少数据,它将很快变得更具可读性。无论如何希望有帮助。

Edit:这是一些示例代码,我已经对其进行了测试,并且非常有信心它能够按预期工作。

var input = "while t < 10 loop\n s => 'this is if stmt'; for u in 8..12 loop \n}"; 
var pattern = "(?:[^\"]|(?:(?:.*?\"){2})*?)(?: |^)(?<kw>for|while|if)[ (]";
var matches = Regex.Matches(input, pattern);
var firstKeyword = matches[0].Groups["kw"].Value;
// The following line is a one-line solution for .NET 3.5/C# 3.0 to get an array of all found keywords.
var keywords = matches.Cast<Match>().Select(match => match.Groups["kw"].Value).ToArray();

希望这应该是您现在的完整解决方案......

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

正则表达式匹配除 C# 中引号中的字符串之外的所有内容 的相关文章

  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • htaccess 301 重定向 - 删除查询字符串 (QSA)

    我一直在努力处理一些 htaccess 重定向 我只是花了一些时间在堆栈上阅读和搜索 但无法获得适合我的场景的答案 我正在将旧客户端网站的 301 重定向到新客户端 旧页面有参数查询 我想从网址中删除它 menu php idCategor
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的

随机推荐

  • Laravel 项目 UML 类图

    我一直在谷歌上搜索 MVC PHP 框架的 UML 示例以及与 PHP 项目相关的项目 UML 图 但不幸的是总是出现 java 和 c 示例 我对 UML 图有一点了解 但没有真正的例子来了解它是如何使用的 我有一个正在开发的 Larav
  • 如何限制在 Django 管理站点中查看的查询集/记录?

    默认情况下 Django 管理站点显示相关模型 表的所有记录以供查看 如何只显示符合特定条件的记录 在您的管理定义中 您可以定义queryset 返回该模型管理员的查询集的方法 例如 class MyModelAdmin admin Mod
  • 何时使用 Rabin-Karp 或 KMP 算法?

    我使用以下字母生成了一个字符串 A C G T 我的字符串包含超过 10000 个字符 我正在其中搜索以下模式 ATGGA TGGAC CCGT 我要求使用字符串匹配算法O m n 运行时间 m pattern length n text
  • 输出迭代器适配器用于计数但不复制

    有多种 STL 算法依赖输出迭代器来存储算法结果 例如 std set intersection将在输出迭代器中存储两个排序范围之间的所有公共元素 然后按输出的每个元素进行后递增 有时 我对实际元素不感兴趣 而只对输出元素的数量感兴趣 在这
  • 为什么在动画块中设置图层锚点时我的视图会跳跃?

    我有一个 UIPanGestureRecognizer 附加到我的 iOS 应用程序中的视图 我从以下位置复制了代码触摸示例应用程序 https developer apple com library ios samplecode Touc
  • 球拍 URL 调度

    我正在尝试将 URL 调度与 Racket 以前称为 PLT 方案 连接起来 我已经查看了教程和服务器文档 我不知道如何将请求路由到相同的 servlet 具体例子 lang scheme require web server servle
  • RxJava Observable 最短执行时间

    我有一个 Observable 它从网络获取数据 问题是 observable 可能会快或慢 具体取决于网络条件 当 observable 执行时 我显示进度小部件 并在 observable 完成时隐藏它 当网络速度很快时 进度会闪烁 出
  • 在 cron 作业中获取 storeId

    许多搜索根本没有帮助 我正在尝试在 cron 作业中执行的函数中获取商店 id 我读到我可以在我的 cron 计划中添加一个参数 但这不是我想要的 我真的需要动态地获取它 任何帮助将不胜感激 编辑 在这个功能中 我处理一些产品 他们的 ge
  • React - refs - 音频播放 - iOS 上未处理的拒绝(NotSupportedError)

    我构建了一个 React 应用程序 可以在桌面网络浏览器上播放 暂停当前选定的音频 playPreview if this state isPlaying this setState isPlaying true this refs aud
  • 连接两个表以获得完整记录

    我正在创建两个表 表 1 具有以下架构 user id int not null autoincrement movie id int not null movie name varchar user name varchar rating
  • 获取 SAPUI5 v2 ODataModel 的服务元数据?

    我尝试获取 sapui5 v2 odata 模型的服务元数据 代码 var oModel new sap ui model odata v2 ODataModel someServiceURL var oMetadata oModel ge
  • 在opengl es 2中,有没有办法防止变量插值

    换句话说 模拟旧的 opengl 平面着色模型 因此您可以拥有一条线带 其中每个段都是不同的颜色 而不是跨段的颜色插值 不直接 GLSL for Desktop 有 flat 关键字 但 GLSL ES 没有 它是保留的 模拟此行为的一个技
  • 如何在 R 4.0.2 中安装“mxnet”包

    下午好 最近我在安装 mxnet 包时遇到了问题 我尝试了几种代码变体 但它们都没有真正安装这个包 1 cran lt getOption repos cran dmlc lt https apache mxnet s3 accelerat
  • silverlight 4 中的 wshttpbinding 支持

    silverlight 4 beta 支持 wshttpbinding wcf 吗 如果没有 稳定版本会支持它吗 不 看起来不像 查看有关该主题的这些博客文章 Silverlight 4 Beta 中的新 Web 服务功能 http blo
  • 从 1 到 N 的所有数字的总和始终为零

    问题是我必须打印一系列的所有组合 数字来自1 to N结果总是为零 是允许的 插入 用于添加 和 用于减去 每个之间 数 这样结果就为零 Output N 7 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4
  • 在 UITableViewCell 中加载图像时将 UIImageView 替换为 UIActivityIndi​​catorView

    我有一个UITableViewCell其中有 2UIImageViewxib 文件中定义 现在我想到了美化 ui 的想法 我想更改 UIImageView 的运行时UIActivityIndicatorView直到异步响应没有返回 不幸的是
  • 如何在 AngularJs 中检查互联网连接

    这就是我在普通 JavaScript 中检查互联网连接的方法 setInterval function if navigator onLine body html Connected else body html Not connected
  • 什么是 System.Web.Mvc.MvcHandler.ProcessAsyncRequest()?

    我正在 NewRelic 中进行一些跟踪 我发现几乎每个请求都包含对 System Web Mvc MvcHandler ProcessAsyncRequest 的调用 此函数调用可能需要 300 毫秒到 100 秒 说真的 100 秒 不
  • 使用 JQuery 解析 Google Calendar v3 API JSON

    我正在尝试解析和循环 Google Calendar v3 API JSON 数据 但我得到的都是未定义的 我认为我的语法只是有一些小问题 但似乎无法弄清楚 我有使用 google com calendar feeds URL 的 v2 A
  • 正则表达式匹配除 C# 中引号中的字符串之外的所有内容

    我是 C 中正则表达式使用的新手 我想要一个正则表达式从给定列表中查找下一个关键字 但该关键字没有被引号包围 例如 如果我有一个如下所示的代码 while t lt 10 string s get if stmt u GetVal t s