【问题标题】:regex to get values between comma separated string正则表达式获取逗号分隔字符串之间的值
【发布时间】:2018-05-31 14:09:32
【问题描述】:

我对正则表达式不太感兴趣,我进行了大量的谷歌搜索,但由于某种原因似乎在这方面苦苦挣扎。基本上我有一个字符串:

VALUE1,VALUE2,VALUE3,VALUE4

现在只需要一个正则表达式,我可以说给我价值 2 或给我价值 3 等等。

我原以为我可以做这样的事情来获得第二个价值

,.*,,

这是最后一个等

,,,.*

必须有一个简单的解决方案......还应该添加这必须通过正则表达式完成!

【问题讨论】:

  • 如果您的某个值包含昏迷会怎样?也许您应该考虑使用适当的 CSV 解析器。
  • 哈只需要相信我,他们不会,需要正则表达式 :)
  • 这取决于使用正则表达式的代码如何使用正则表达式,例如"^.*?,(.*?),.*?,.*?$" 将捕获第二项。
  • 这将是第四个等 ^.*?,.*?,(.*?),.*?$ 这是完美的先生 :)
  • @MartinCooke Checkout this regex demo,并确保系好安全带^^。

标签: regex string vb.net split expression


【解决方案1】:

我认为您需要的只是逗号分隔符上的正则表达式:

Dim input As String = "VALUE1,VALUE2,VALUE3,VALUE4"
Dim terms() As String = Regex.Split(input, ",\s*")
For Each term As String In terms
    Console.WriteLine(term)
Next

Demo

请注意,我在,\s* 上进行拆分,以防每个逗号后有一些空格。

我们可以尝试为您提供一个可以在给定位置提取术语的原始正则表达式,但即使这样也需要知道您使用的是哪个工具,才能知道如何访问捕获组。由于您使用的是 VB.net,因此使用正则表达式拆分字符串可能是可行的方法。

编辑:

从 cmets 中,您可能正在寻找以下正则表达式模式:

^(?:.*?,){3}(.*?)(?=,|$).*$

Demo

【讨论】:

  • 非常感谢您的回复,我知道这有点奇怪,但我无法使用该示例,因为应用程序需要 xml 参数,这些参数是字符串,然后是从如果这是有道理的字符串。我无法将 vb.net 代码添加到应用程序中,我只能提供字符串值和正则表达式来告诉第三方应用程序我想要收集哪些值。
  • @MartinCooke 那么您至少需要告诉我您的第三方将使用哪种正则表达式工具/语言。如果不告诉我们这一点,恐怕您是在问一个由于不清楚而需要结束的问题。
  • 第三方应用程序是用 C# 编写的,我们的目标是用字符串值注入它,然后用正则表达式告诉它应该选择哪些值,希望这会有所帮助:)
  • 真的没有帮助。我需要知道正在使用的确切 API。无论如何,我相信我给出的答案是大多数在 VB 中遇到问题的人实际上想要使用的答案。
  • 对不起,我没有更好地解释它,请参阅上面的 Andrew Mortons 回复,这似乎有效 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多