C#正则表达式问题

时间:2011-03-24 15:38:11

标签: c# regex

我有以下字符串:

http://www.powerwXXe.com/text1 123-456 text2 text3/

有人可以就如何获取text1,text2和text3的值并将它们放入字符串给我建议。我听说过正则表达式,但不知道如何使用它们。

6 个答案:

答案 0 :(得分:5)

如果您知道该字符串的格式类似,则可以使用string.Split,先使用/,然后使用空格,而不是使用RegEx路线。从结果字符串数组中检索结果。

string[] slashes = myString.Split('/');
string[] textVals = slashes[3].Split(' ');
// at this point:
//   textVals[0] = "text1"
//   textVals[1] = "123-456"
//   textVals[2] = "text2"
//   textVals[3] = "text3"

答案 1 :(得分:0)

以下是C#中正则表达式入门的链接:Regular Expression Tutorial

由于信息在线,我不认为在这里写一个教程是合适的,所以请查看链接,如果您有特定问题,请告诉我。

答案 2 :(得分:0)

您可以使用string.Fromat("http://myurl.com/{0}{1}{2}", value1, textbox2.Text, textbox3.Text)并以任何方式格式化网址,而不是使用正则表达式。如果您希望使用正则表达式路线,可以随时查看regexlib

答案 3 :(得分:0)

正则表达式的使用依赖于您在字符串中看到的模式 - 您需要能够在使用正则表达式之前概括您正在寻找的字符串模式。

对于此范围的问题,如果您可以确定模式,您可能最好使用其他字符串解析方法,例如String.IndexOfString.Split

正则表达式是一个强大的工具,当然值得学习,但这里可能没有必要。

答案 4 :(得分:0)

根据您提供的示例,看起来text1,text2和text3是否用空格分隔?如果是这样,并且如果你总是知道他们将要进入​​的位置,你可能想要跳过正则表达式,只需使用.Split('')将字符串拆分成一个字符串数组,然后从那里获取相关的项目。像这样:

string foo = "http://www.powerwXXe.com/text1 123-456 text2 text3/"
string[] fooParts = foo.Split(' ');
string text1 = fooParts[0].Replace("http://www.powerwXXe.com/", "");
string text2 = fooParts[2];
string text3 = fooParts[3].Replace("/", "");

你想在尝试从中抓取任何东西之前对字符串[]执行边界检查,但这样可行。正则表达式对于字符串解析非常棒,但是当你需要做的事情很简单时,有时候当字符串类中的简单方法会这样做时会有点过分。

答案 5 :(得分:0)

这完全取决于您对要解析的字符串的了解程度。字符串来自哪里,你知道它的形成程度是多少?

根据您的示例字符串,您可以使用像

这样简单的东西
string pattern = @"http://www.powerwXXe.com/(?<myGroup1>\S+)\s\S+\s(?<myGroup2>\S+)\s(?<myGroup3>\S+)/";
        var reg = new System.Text.RegularExpressions.Regex(pattern);

        string input = "http://www.powerwXXe.com/text1 123-456 text2 text3/";
        System.Text.RegularExpressions.Match myMatch = reg.Match(input);

然后,caputerd字符串将分别包含在myMatch.Groups [“myGroup1”],[“myGroup2”],[“myGroup3”]中。

然而,假设您的字符串始终以http://www.powerwXXe.com/开头,将始终有三个组要捕获,并且这些组由空格分隔(这是一个非法的字符在url中,几乎在所有情况下都是如此转换为%20,这必须在模式中考虑。)

那么,你对你的弦有多少了解?并且,正如一些人已经说过的那样,你真的需要正则表达式吗?