c# - 使用正则表达式在一个子字符串中查找多个项目

标签 c# regex text substring

很难为我的问题找到一个合适的标题。首先是一些背景信息,以备您需要时使用。

*我有一个法案,我正在尝试使用正则表达式读取信息。我将所需的信息保存到 4 个不同的表中:帐户、实用程序、位置和税费。

逻辑是每张账单只有一个帐号(帐户级别)。每个帐号可以属于多个实用程序(实用程序级别)。每个实用程序可以有多个位置(假设此问题只有 1 个位置)。并且每个地点可以有多个税收。*

所以对于找到的账单HERE 我们可以看到 4 种税(城市销售税 2.97、县销售税 1.46、州销售税 3.44 和 PPRTA 税 1.10)都属于“电力”公用事业。我们还看到 4 个公用设施(电力、燃气、水和废水)属于 1 个帐号,每个公用设施都有自己的税费。

之前,我一直在执行类似这样的简单操作,多次捕获一个捕获组中的所有税收:税收:.\$(.)

我现在想要完成的是构建一个正则表达式,仅查找给定公用事业的所有税收。同样,它必须位于具有多个匹配项的一个捕获组中。

这是迄今为止我所掌握的电力税的示例:(?:电力商业服务(?:.\n)?. ?税费:.*\$(.)(?:.\n)?.?此服务的总费用)*

如您所见,这仅收取第一笔税。我无法找到一种方法来使其涵盖与电力服务相关的“电力商业服务”和“此项服务的总费用”之间的所有税费。

谢谢!

最佳答案

在大多数语言中,您无法使用单个正则表达式来完成此操作。即使该组使用通配符,捕获组也只会产生匹配数组中的一个元素。

您需要分两步完成。首先使用正则表达式(或其他方式)提取单个公用事业的账单部分。然后在该字符串中,您可以使用正则表达式

Tax:.* \$([\d.]+)$

查找所有税费。在 PHP 中,您可以使用 preg_match_all 来查找所有匹配项;其他语言应该有类似的东西(可能涉及正则表达式的 g 修饰符)。

关于c# - 使用正则表达式在一个子字符串中查找多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15231838/

相关文章:

javascript - 需要特定的正则表达式

c# - 将数据集转换为列表

c# - 用 C# 缩小 JavaScript

c# - 为什么我的 Regex.Replace 字符串包含两次替换值?

javascript - 匹配打开和关闭的 html 标签的正则表达式

wpf - 使用多种类型的控件搜索并突出显示 WPF 窗口上的任何文本

c++ - "error: stray '\XXX ' in C++ program": Why does this happen?

java - 如何使用 PrintWriter 打印多行输入以保存在文本文件中?代码里面

c# - 使用 XmlDictionaryWriter.CreateBinaryWriter 和 XmlDictionary 编写紧凑的 xml

C# 给列表框添加点击事件