是否可以编写一个匹配特定模式的正则表达式,然后用该模式的一部分进行替换

2023-12-20

我正在处理一些逗号分隔的文本文件。该文件由大约 400 行和 94 列组成,所有内容均以逗号分隔并带有双引号:

"H","9","YES","NO"....

我的目标是使用逗号分隔符将文件拆分为各自的列。不幸的是,行中有几个字段具有以下格式:

"4,5"  or "2,5,8"

当解析逗号上的文件时,这些字段会破坏文件的列结构。所以我想做的是使用正则表达式进行某种查找和替换,以便我可以成功解析我的文件。例如:

 "H","9","YES","NO","4,5","Y","N"  would become this:


"H","9","YES","NO","4|5","Y","N"

这样当我解析文件时,我会得到七列而不是八列。

我写了一个处理匹配“2,5”或“2,3,4”的正则表达式 https://regex101.com/r/jB4oI6/1”,但我不知道如何处理更换的部件。

这个正则表达式可以实现吗?

注意:我使用的是 perl 正则表达式。


您可以考虑替换字段分隔符逗号,而不是干扰明显的源数据,即引号内的内容:

s/,([^,"]*|"[^"]*")(?=(,|$))/|$1/g

请注意,这也处理未引用的字段。

就这个数据而言:"H",9,"YES","NO","4,5","Y","N"

$ perl -pe 's/,([^,"]*|"[^"]*")(?=(,|$))/|$1/g' commasep
"H"|9|"YES"|"NO"|"4,5"|"Y"|"N"

之后可以用“|”分割:

$ perl -ne 's/,([^,"]*|"[^"]*")(?=(,|$))/|$1/g;print join "---",split "\\|"' commasep
"H"---9---"YES"---"NO"---"4,5"---"Y"---"N"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以编写一个匹配特定模式的正则表达式,然后用该模式的一部分进行替换 的相关文章

  • 在闪亮的应用程序中选择文件夹或文件夹目录

    我在使用闪亮时遇到问题 我想选择保存我要在应用程序中使用的所有文件的文件夹 方法是 1 将工作目录设置为该文件夹路径 或 2 将此文件夹内的所有 csv 数据上传到我的应用程序以进行进一步处理 1 我找到了shinyFiles包 但它非常非
  • 循环遍历字符串中的 html 标签并将内部文本添加到数组中

    我有一些 HTML 内容保存为字符串 我想循环遍历该字符串中的每个标题标签并获取其内部文本 let str h1 topic 1 h1 p desc of topic 1 p h1 topic 2 h1 p desc of topic 2
  • [a-zA-Z] 的正则表达式

    我有一个仅匹配英文字母的正则表达式 a a zA Z 字符类 有没有内置的正则表达式 我的意思是像 s or w 您正在要求一个速记班 http www regular expressions info shorthand html对于英文
  • Mysql 选择 csv 字符串中的 where 字段

    我想从一个表中进行选择 其中的字段位于传递给存储过程的给定 csv 字符串中 最快的方法是什么 我应该将这些值插入临时表并加入其中吗 或者有没有办法用一个语句来做到这一点 Thanks 做了一些搜索并找到了一个很好的答案 使用MySql的字
  • 正则表达式 括号之间的匹配 (...)

    我正在尝试从一条简单的线中抓取 2 件物品 Title Description 编辑 实际上一个想要显示的网址称为描述 因为我希望它显示而不是实际解析 Trivium https www youtube com user trivium 在
  • 使用正则表达式在图像标签周围添加链接

    我想使用 preg replace 在图像标签周围添加链接 Before img href src alt After a href img href src alt a 我将非常感谢任何帮助 非常感谢 这有帮助吗 str img href
  • 当存在多个字段分隔符时使用 AWK 忽略字段内的逗号

    我想像下面这样解析 CSV 记录awk or gawk 这些字段以逗号分隔 但最后一个字段 6 很特殊 因为它确实由子字段组成 这些子字段由 作为字段分隔符 或者 准确地说 分隔 这本身不是问题 我可以使用awk F 设置替代字段分隔符 但
  • 从Python中的字符串中提取日期时间的最佳方法

    我有一个脚本可以解析电子邮件标题中表示日期和时间的字段 这些字符串的一些示例如下 Fri 10 Jun 2011 11 04 17 0200 CEST Tue 1 Jun 2011 11 04 17 0200 Wed 8 Jul 1992
  • 判断正则表达式是否只匹配固定长度的字符串

    有没有办法确定正则表达式是否只匹配固定长度的字符串 我的想法是扫描 和 然后 需要一些智能逻辑来查找 m n 其中 m n 没有必要采取 考虑到运营商 小例子 d 4 是固定长度 d 4 5 或 d 是可变长度 我正在使用PCRE Than
  • 如何检查有效的电子邮件地址? [复制]

    这个问题在这里已经有答案了 有没有一种好方法可以使用正则表达式检查表单输入以确保它是正确样式的电子邮件地址 从昨晚开始就一直在搜索 如果它是子域名电子邮件地址 那么每个回答过人们有关该主题的问题的人似乎也有问题 无关紧要 即使您可以验证电子
  • 正则表达式限制 url 文件夹的通配符

    我想设置一个与 URL 的某些模式匹配的正则表达式 http www domain com folder1 folder2 anything anything index html 这匹配并完成工作 http www domain com
  • htaccess 正则表达式目录到变量

    我需要对某些 URL 从目录到变量进行 301 重定向 EXAMPLE http domain com es stackoverflow gt http domain com stackoverflow lang es http domai
  • 从云函数在 Google Cloud Storage 中创建新的 csv 文件

    第一次使用 Google 云存储 下面我有一个云函数 每当 csv 文件上传到时就会触发该函数my folder在我的桶里 我的目标是在同一文件夹中创建一个新的 csv 文件 读取上传的 csv 的内容并将每一行转换为将进入新创建的 csv
  • 使用csv文件-PHP创建表到mysql时添加反引号

    我有一个 php 代码 它将使用 csv 文件创建一个到 mysql 数据库的表 然而 某些列标题没有被 mysql 读取 mysql 唯一一次读取查询是当我添加反引号 您能帮助我在查询中的何处添加反引号吗 这是我的代码 file C Us
  • 正则表达式匹配非整数?

    尝试创建一个忽略正确整数的正则表达式 1 5 999等 和正斜杠 但在其他所有内容中都找到匹配项 例如 它将找到以下匹配项 test test1 test 1 但忽略了 1 55 7 这是为了模组重写 0 9 我想应该可以解决这个问题 它将
  • JavaScript 中最大长度的正则表达式

    如何限制与正则表达式匹配的字符串的长度 我假设var sixCharsRegEx 6 7 只匹配长度为 6 或 7 的字符串 but no http jsfiddle net FEXbB http jsfiddle net FEXbB 我缺
  • 字符串中unicode字符的正则表达式

    我正在使用 C 进行一些 OCR 工作 并提取了我需要使用的文本 现在我需要使用正则表达式解析一行 string checkNum string routingNum string accountNum Regex regEx new Re
  • RestEasy @Path 正则表达式问题

    是否可以使用可选路径变量定义路径 就像下面的 uri app make make model model year year mileage mileage fuelType fuelType maxPrice maxprice trans
  • 实现词法分析器时,DFA 与正则表达式?

    我刚刚学习如何编写编译器 所以如果我有任何错误的说法 请纠正我 当人们可以简单地使用正则表达式时 为什么还要在代码中实现 DFA goto 语句 表驱动实现 据我了解 词法分析器接收一串字符并生成一个标记列表 这些标记在语言的语法定义中是终
  • 使用 PowerShell 检查 AD 中是否存在组

    我想为该组创建代码来检查该组是否存在 但是 我无法开始工作 因为它成功地将用户和组的部分成员仅添加到一个组中 而不是其他组 因为我设法在活动目录中创建一个组并从 csv 中读取 这是我的代码和结果 似乎在成功添加用户并添加组成员后我总是收到

随机推荐