Regex 正则表达式以获取逗号分隔字符串之间的值

Regex 正则表达式以获取逗号分隔字符串之间的值,regex,string,vb.net,split,expression,Regex,String,Vb.net,Split,Expression,我对regex不感兴趣,在谷歌上搜索了很多次,但出于某种原因,我似乎在这方面很挣扎。基本上我有一个字符串: VALUE1,VALUE2,VALUE3,VALUE4 现在我想要的是一个正则表达式,我可以说给我值2或者给我值3等等 我本以为我可以这样做得到第二个值 ,.*,, 这是最后一次等 ,,,.* 必须有一个简单的解决方案…还应该添加这必须通过正则表达式完成 我想这里只需要逗号分隔符上的正则表达式拆分: Dim input As String = "VALUE1,VALUE2,VALUE

我对regex不感兴趣,在谷歌上搜索了很多次,但出于某种原因,我似乎在这方面很挣扎。基本上我有一个字符串:

VALUE1,VALUE2,VALUE3,VALUE4
现在我想要的是一个正则表达式,我可以说给我值2或者给我值3等等

我本以为我可以这样做得到第二个值

,.*,,
这是最后一次等

,,,.*

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

我想这里只需要逗号分隔符上的正则表达式拆分:

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

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

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

编辑:

从评论中可以看出,下面的正则表达式模式可能就是您想要的:

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

我想您只需要在逗号分隔符上拆分正则表达式:

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

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

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

编辑:

从评论中可以看出,下面的正则表达式模式可能就是您想要的:

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


如果您的一个值包含昏迷,会发生什么情况?也许你应该考虑使用一个合适的CSV解析器。你只要相信我,他们不会,需要正则表达式:)这取决于使用正则表达式的代码如何使用正则表达式,例如“^.*?,(.*?,.*?,.*?,.*?,.$”将捕获第二项。而这将是第四项,等等^.*,(.*?,(.*?,。$,这是完美的,先生:)@MartinCooke Checkout,并确保安全带系紧^^^。如果您的一个值包含昏迷,会发生什么情况?也许你应该考虑使用一个合适的CSV解析器。你只要相信我,他们不会,需要正则表达式:)这取决于使用正则表达式的代码如何使用正则表达式,例如“^.*?,(.*?,.*?,.*?,.*?,.$”将捕获第二项。而这将是第四项,等等^.*,(.*?,(.*?,。$,这是完美的,先生:)@MartinCooke Checkout,并确保安全带系紧^^。非常感谢您的回复,我知道这有点奇怪,但我无法使用该示例,因为应用程序采用xml参数,这些参数是字符串,然后是从字符串中提取的正则表达式(如果有意义的话)。我无法将vb.net代码添加到应用程序中,我只能给出字符串值和正则表达式来告诉第三方应用程序我要收集哪些值。@MartinCooke那么您至少需要告诉我您的第三方将使用哪个正则表达式工具/语言。在没有告诉我们这些的情况下,我担心您提出了一个需要关闭的问题。第三方应用程序是用C#编写的,我们的目标是向它注入字符串值,然后正则表达式告诉它应该选择哪些值,希望这有帮助:)实际上没有帮助。我需要知道正在使用的确切API。不管怎样,我给出的答案我相信是大多数在VB中遇到问题的人都想使用的。很抱歉,我没有更好地解释它,请参见上面的Andrew Mortons回复,这似乎是有效的:)非常感谢您的回复,我知道这有点奇怪,但我无法使用该示例,因为应用程序需要xml参数,这些是字符串,然后是从字符串中提取的正则表达式(如果有意义的话)。我无法将vb.net代码添加到应用程序中,我只能给出字符串值和正则表达式来告诉第三方应用程序我要收集哪些值。@MartinCooke那么您至少需要告诉我您的第三方将使用哪个正则表达式工具/语言。在没有告诉我们这些的情况下,我担心您提出了一个需要关闭的问题。第三方应用程序是用C#编写的,我们的目标是向它注入字符串值,然后正则表达式告诉它应该选择哪些值,希望这有帮助:)实际上没有帮助。我需要知道正在使用的确切API。无论如何,我给出的答案我相信是大多数在VB中遇到问题的人都希望使用的。很抱歉,我没有更好地解释它,请参见上面的Andrew Mortons回复,这似乎起到了作用:)