正則表達式 取兩字符中間的字符串(雙向非貪婪模式)


        /// <summary>
        /// 獲取某字符串中間的字符串,非貪婪模式
        /// </summary>
        /// <param name="input">全字符串</param>
        /// <param name="left">左邊字符</param>
        /// <param name="right">右邊字符</param>
        /// <returns></returns>
        public static List<string> GetCenterString(String input, String left, String right)
        {
            List<string> list = new List<string>();
            Regex reg = new Regex(left + "(((?!" + left + ").)+?)" + right);
            foreach (Match m in reg.Matches(input))
            {
                list.Add(m.Value);
            }

            return list;
        }

改進:添加參數是否包含左右字符

        /// <summary>
        /// 獲取某字符串中間的字符串,非貪婪模式
        /// </summary>
        /// <param name="input">全字符串</param>
        /// <param name="left">左邊字符</param>
        /// <param name="right">右邊字符</param>
        /// <param name="isBorder">是否包含 left right 字符</param>
        /// <returns></returns>
        public static List<string> GetCenterString(String input, String left, String right, bool isBorder = true)
        {
            List<string> list = new List<string>();
            Regex reg = new Regex(left + "(((?!" + left + ").)+?)" + right);
            foreach (Match m in reg.Matches(input))
            {
                string value = m.Value;
                if (!isBorder)
                {
                    value = value.Substring(left.Length, value.Length - left.Length);
                    value = value.Substring(0, value.Length - right.Length);
                }
                list.Add(value);
            }

            return list;
        }

測試:

 string all = @"這是一段測試數據{{dasdasdas}}這是一段測試數據{{ddd}{這是一段測試數據{{dasd}";
            List<string> strList = StringPlus.GetCenterString(all, "{", "}");

輸出結果:{dasdasdas}{ddd}、{dasd}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM