使用正则表达式从句子中的方括号中提取剩余的子字符串

时间:2018-01-16 06:20:57

标签: c# regex string regex-negation regex-lookarounds

我有这样的句子:[amenities FREE HOT BREAKFAST AND WIRELESS INTERNET]

我想从方括号中提取子字符串FREE HOT BREAKFAST AND WIRELESS INTERNET

我试过这个正则表达式\[(.*?)\],它给了我方括号内的整个子字符串。

Tried Regex

我还尝试了正则表达式\bamenities\b来获取“设施”这个词,并试图否定它周围的字符串。

Tried Regex 2

但是,我希望子串的其余部分在开始时与子串'Amenities'分开。我想在方括号中提取所有可能的子串,前面加上单词'Amenities'

我正在尝试使用此代码在C#中提取以下内容。

 public class Program
    {
        public static void Main(string[] args)
        {
            string s = "BEST AVAILABLE RATE , [amenities BREAKFAST] , [amenities WIFI] AND FITN ? - MORE IN HP";

            MatchCollection m = Regex.Matches(s, @"\bamenities\b");

            foreach(var item in m)
                Console.WriteLine("{0}", item);

        }
    }

以下是预期的

   Input: BEST AVAILABLE RATE , [amenities BREAKFAST] , [amenities WIFI] AND FITN ? - MORE IN HP 

    Output: 
    string 1 - BREAKFAST 
    string 2 - WIFI

2 个答案:

答案 0 :(得分:1)

您可以尝试this

/\[amenities (.*?)\]/ig

答案 1 :(得分:1)

(?<=amenities )+[^\]]*

这使用lookbehind断言,这有助于替换\K

Check the result here