【问题标题】:VB.net regex find value between second commasVB.net 正则表达式查找第二个逗号之间的值
【发布时间】:2023-01-02 00:11:43
【问题描述】:

我正在尝试使用正则表达式从第二组逗号之间提取值。在开头的单词中有字母 S。

(?<=S,[^,],)[^,]+(?=,)

以上是我能得到的最接近的。它将给出我在 BS 和 CS 线上寻找的值。我在想后面的 [^'] 会得到(排除)第一组逗号之间的所有字符。

BB,21,1.750000,0.000000,
AS,21.5,3.250000,-0.187500
BS,21,3.250000,-0.187500
CS, ,1.750000,-0.375000
DS,1,30.375000,-0.375000
QA,aa,30.375000,-0.375000

寻找不仅仅是答案真的很喜欢解释,所以我可以从中学习。

【问题讨论】:

    标签: regex vb.net


    【解决方案1】:

    您可以在开始时在回顾中重复字符类,但在这种情况下,“第二组逗号之间的值”实际上是您匹配的当前值左侧的 2 个逗号。

    S 是逗号前的最后一个值,它可以有多个匹配项,因为没有锚点。

    (?<=S,[^,]*,)[^,]+(?=,)
    

    Regex101 demo

    如果这些行仅以大写字符 A-Z 开头,则您可以在第一部分中至少匹配一个 S 字符

    (?<=^[A-RT-Z]*S[A-Z]*,[^,
    ]*,)[^,
    ]+(?=,)
    

    模式匹配:

    • (?&lt;= 正面回顾,断言左边是
      • ^ 字符串开始
      • [A-RT-Z]* 匹配不带 S 的可选字符 A-Z
      • S[A-Z]*匹配 S 和可选字符 A-Z
      • ,[^, ]*,匹配2次逗号
    • )关闭外观
    • [^, ]+ 匹配除逗号或换行符以外的 1+ 个字符
    • (?=,)在右边断言一个逗号

    Regex101 demo

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      相关资源
      最近更新 更多