正则表达式切出句子C#中的单词

时间:2014-03-18 15:49:36

标签: c# html regex string text

我有一些句子,我想用C#

中的Regex提取一些单词

例如:

// 标准间1人从2014年3月18日至2014年3月19日

获得#34;标准房1人"在句子之外,从xxxx删除到xxxx

// 家庭之夜3/4 从2014年3月18日至2014年3月19日

获得"家庭之夜的房间"和3/4是房间里的人数,我想把4出来作为房间里的最大人数。

对于这两种情况,都会忽略from和to。

你能否建议我使用reg ex模式做这些事情(2例)?

非常感谢你,祝你有愉快的一天!

3 个答案:

答案 0 :(得分:0)

如果你不坚持正则表达式:

string[] array1 = "Standard room 1 persons from 18/03/2014 to 19/03/2014".Split();
string[] array2 = "Family night room 3/4 from 18/03/2014 to 19/03/2014".Split();

string n = String.Join(" ", array1.TakeWhile(s => s != "from").ToArray());
string n2 = String.Join(" ", array2.TakeWhile(s => s != "from").ToArray());

Console.WriteLine(n);  // Standard room 1 persons 
Console.WriteLine(n2); // Family night room 3/4 

答案 1 :(得分:0)

只需使用:

string s = "//Standard room 1 and 1/4 persons from 18/03/2014 to 19/03/2014";
            string matchedStr = Regex.Match(s, ".*(?=from)(?=.*to)").Value;
            Console.WriteLine(matchedStr);
            string totalStr = Regex.Match(s, ".*(?=from)(?=.*to)").Value;
            int total=Convert.ToInt32(Regex.Match(totalStr,@"(?<=\d/)\d").Value);
            Console.WriteLine(total);

答案 2 :(得分:0)

示例代码:

string input = "Standard room 1 persons from 18/03/2014 to 19/03/2014"
string s = Regex.Match(input, "(.*)(?=from)").Value;
s = s.Trim();

// Get your maximum number
MatchCollection numbers = Regex.Matches(s, "[\d]");
int max = 0;
foreach (Match number in numbers)
{
     int temp = int.Parse(number.Value);
     if (max > temp)
        max = temp;
}