C#正则表达式问题

修改一下昵称 2020-10-30 05:21:22
string str = "张三${abc}李四";
string str1 = "${def}001";
想通过正则表达式获取到str字符中的abc和str1字符中的def
...全文
2073 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
简单的“split”机制不要用正则。
var str = "张三${abc}李四";
var i = str.Split(new string[] { "${" }, StringSplitOptions.None);
if (i.Length >= 2)
{
var j = i[1].Split('}');
if (j.Length >= 2)
{
Debug.Assert(j[0] == "abc");
}
}


或者如果你确定 str 中必定有目标分隔符,则可以省去 if 判断:
var result = str.Split(new string[] { "${" }, StringSplitOptions.None)[1].Split('}')[0];
Debug.Assert(result == "abc");
merryland 2020-10-31
  • 打赏
  • 举报
回复
参考一下,多谢分享
ziqi0716 2020-10-30
  • 打赏
  • 举报
回复
不用正则表达式行不?
   
 class Program
    {
        static void Main(string[] args)
        {
            var str = "张三${abc}李四"; 

            var indexOfLeft = str.IndexOf("${")+2;
            var indexOfRight = str.IndexOf("}");
            var result = str.Substring(indexOfLeft, indexOfRight - indexOfLeft);

            Console.WriteLine(result);
        }
    }
别走,我有盘 2020-10-30
  • 打赏
  • 举报
回复
string str = "张三${abc}李四";
Regex r = new Regex("{[\\s\\S]*}");
MatchCollection mc = r.Matches(str);
for (int i = 0; i < mc.Count; i++)
{
    string res = mc[i].Value;
}
Xiao__Chou 2020-10-30
  • 打赏
  • 举报
回复
https://www.cnblogs.com/fdyang/p/6842547.html 可以参考一下

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧