正则表达式如何匹配 2 个字段

2024-01-06

如何捕获引号内的文件名以及后面的数字作为命名捕获(正则表达式/C#)?

Files("fileone.txt", 5969784, "file2.txt", 45345333)

在字符串中的每次出现中,能够捕获“fileone.txt”和后面的整数(循环循环每对)

我正在尝试使用这个https://regex101.com/r/MwMzBo/1 https://regex101.com/r/MwMzBo/1但在没有“[”和“]”的情况下存在匹配问题。

需要能够将每个文件名+大小作为一对循环并移动到下一个。

任何帮助表示赞赏!

UPDATE

string file = "Files(\"fileone.txt\", 5969784, \"file2.txt\", 45345333, \"file2.txt\", 45345333)";
var regex = new Regex(@"(?:\G(?!\A)\s*,\s*|\w+\()(?:""(?<file>.*?)""|'(?<file>.*?)')\s*,\s*(?<number>\d+)");
var match = regex.Match(file);
var names = match.Groups["file"].Captures.Cast<Capture>();
var lengths = match.Groups["number"].Captures.Cast<Capture>();
var filelist = names.Zip(lengths, (f, n) => new { file = f.Value, length = long.Parse(n.Value) }).ToArray();
foreach (var item in filelist)
{
   // Only returning 1 pair result, ignoring the rest
}

读取 match.Value 来确认正在读取的内容。仅第一对正在被挑选。

while (match.Success)
{
   MessageBox.Show(match.Value);
   match = match.NextMatch();
}

现在我们正确地得到了所有结果。我读到,Regex.Match 只返回第一个匹配的结果。这解释了很多。


您可以使用

(?:\G(?!\A)\s*,\s*|\w+\()(?:""(?<file>.*?)""|'(?<file>.*?)')\s*,\s*(?<number>\d+)

See the 正则表达式演示 https://regex101.com/r/1QulEl/3

Details:

  • (?:\G(?!\A)\s*,\s*|\w+\()- 上一次成功匹配的结尾以及用零个或多个空格括起来的逗号,或者一个单词和一个开头( char
  • (?:""(?<file>.*?)""|'(?<file>.*?)') - ",将“文件”分组,捕获除换行符之外的任何零个或多个字符,尽可能少,然后", or a ',将“文件”分组,捕获除换行符之外的任何零个或多个字符,尽可能少,然后'
  • \s*,\s*- 用零个或多个空格括起来的逗号
  • (?<number>\d+)- 组“数字”:一位或多位数字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式如何匹配 2 个字段 的相关文章

随机推荐

  • 如何缩放 HTML 画布中的图像数据?

    我的网页中有一个画布 我在此画布中创建一个新的图像数据 然后通过修改一些像素myImgData data 大批 现在我想缩放该图像并使其更大 我尝试缩放上下文 但图像仍然很小 是否有可能做到这一点 谢谢 您可以将 imageData 绘制到
  • 为什么在将整数除法存储在浮点变量中后,我在 C 中得到错误的结果? [复制]

    这个问题在这里已经有答案了 我正在使用STM32和GCC编译器 我做了以下划分 uint8 t w h w 2 h 5 float test w h 8 结果是test 1 为什么我错了 我无法理解这种行为 有人能给我解释一下原因吗 w h
  • Swift 中“withEvent”的含义以及一般参数修饰符

    TouchesBegan 触摸 NSSet withEvent事件 UIEvent 此行中 withEvent 关键字的功能是什么 我找不到有关 withEvent 一般用途或此类函数参数修饰符可能做什么 如何定义它们或有多少个的文档 这是
  • C# OPENXML XLSX 自定义列宽

    C 新手来了 我需要创建一个小型控制台应用程序来将 CSV 文件转换为 XLSX 文件 我的所有样式和数据都正常工作 但我想在某些列上设置不同的 与默认的 宽度 经过一天的搜索和阅读后 我仍然不知道如何让它工作 举个例子 我想 将 A 列和
  • EmguCV DLL 未找到异常 - 无法找到 cvextern?

    首先 这不是 SO 和网络上询问的另一个盲目的 Emgu CV DLL 问题 我已经研究了这个问题 但找不到解决方案 我已将我在一个项目中使用的 EmguCV 版本更新到最新版本 3 4 3 一切在开发机器和 Windows 10 机器上运
  • Xcode 7:忽略存储库中的 .xcscmblueprint?

    我注意到 Xcode 7 创建了一个新的 xcscmblueprint文件在xcshareddata文件夹 它总是自动生成吗 应该将该文件添加到存储库的忽略列表中 还是应该将其签入存储库 Xcode 6 有 xccheckout文件 我总是
  • Azure 流量管理器和 https 端点

    我有一个在 Azure 上运行的网站 我添加了一个自定义域和 SSL 以启用对其的 https 访问 一切皆好 几天前 Azure 在托管我的网站的数据中心 西欧 出现了网络问题 当然我的网站在那段时间受到了影响 所以我现在决定将我的网站置
  • 打印 Visual Studio 用于编译文件的整个命令

    当我们在 Visual Studio 中编译 C C 项目时 输出窗口只打印正在编译的文件的名称 我们如何打印整个命令 即 编译该文件时使用的所有包含目录 标志等 我知道当我们右键单击文件名时有一个选项 特性 命令行 它显示了构建时要使用的
  • SimpleXML 获取子元素之间的元素内容

    我正在使用 SimpleXML 在 PHP 中解析 XML 并且有一个如下所示的 XML
  • 转换/展平对象数组

    我有以下对象数组 需要将其转换为一个对象 是否有捷径可寻 我在页面上有下划线 也许它能有所帮助 John name John age 59 Dave name Dave age 62 to John name John age 59 Dav
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • 在考虑唯一推销员姓名计数的同时,查找随着日期增加的保险销售金额的累积总和

    我有下表 SaleDate SaleName SaleAmount 2021 03 01 Jack 40 2021 03 02 Mark 60 2021 03 03 Sam 30 2021 03 03 Mark 70 2021 03 02
  • SQLite查询小于或大于检查

    我想用这个 return mDb query DATABASE TABLE new String KEY ROWID KEY LEVEL KEY LEVEL gt 3 AND KEY LEVEL lt 5 null null null nu
  • 错误:“无法找到 rake”,但 Rake 已安装

    为什么我会收到此 Rake 错误 rake version Volumes Data sampablokuper rvm rubies ruby 1 9 3 p194 lib ruby site ruby 1 9 1 rubygems de
  • Android 屏幕尺寸 HDPI、LDPI、MDPI [重复]

    这个问题在这里已经有答案了 我有一个需要适合所有屏幕尺寸的背景 我有三个文件夹 hdpi ldpi and mdpi对于可绘制对象 但在模拟器中没有任何关于分辨率的参考hdpi是什么mdpi and ldpi are 你应该阅读支持多屏 h
  • 对枚举的引用不明确 Objective-c

    我在另一个文件中定义了一个 NS ENUM typedef NS ENUM NSUInteger LinkPlatformType LinkPlatformTypeEmail 1 LinkPlatformTypeFacebook LinkP
  • 如何使用返回类型 ActionResult 对操作进行单元测试?

    我的问题与这个非常相似 当返回类型为 ActionResult 时 如何对操作进行单元测试 https stackoverflow com q 18865257 419956 问题是我的问题混合在generic ActionResult
  • 如何使用jquery选择表中的一行?

    我在我的应用程序中创建了一个表格 我想在单击复选框时选择 更改背景颜色 整行 就像 gmail 所做的那样 当我们单击 gmail 中的复选框时 整行变为黄色 table tbody tr td td tr tbody table
  • 对“gluOrtho2D”的未定义引用[重复]

    这个问题在这里已经有答案了 http programanddesign com cpp qt opengl code example http programanddesign com cpp qt opengl code example
  • 正则表达式如何匹配 2 个字段

    如何捕获引号内的文件名以及后面的数字作为命名捕获 正则表达式 C Files fileone txt 5969784 file2 txt 45345333 在字符串中的每次出现中 能够捕获 fileone txt 和后面的整数 循环循环每对