学习
实践
活动
工具
TVP
写文章

解读C#正则表达式

多少年来,许多编程语言和工具都包含对正则表达式支持,.NET基础类库包含有一个名字空间和一系列可以充分发挥规则表达式威力类,而且它们也都与未来Perl 5规则表达式兼容。    NETregexp类是Perl 5表达式一个超集,因此,从理论上说它将作为一个很好起点。我们还假设你具有了C#语法和.NET架构基本知识。    在C#,我们还经常使用字母字符串,在一个字母字符串,编译程序不把字符“ \” 作为转义字符处理。在使用字符“\”指定转义字符时,@"..."是非常有用C#语言中foreach语句处理每个匹配字符,并完成相应处理,在这个例子,新创建了一个result字符串。 常用表达式   为了能够更好地理解如何在C#环境中使用规则表达式,我写出一些对你来说可能有用规则表达式,这些表达式在其他环境中都被使用过,希望能够对你有所帮助。

47170

C#正则表达式表达.和

C#正则表达式表达'.'和'\' 正则表达式 ---- 1. 正则'.'转义 如果要表达字符串'.',在正则表达式中表达为"\.",因为'.' 在正则表达式是元字符,需要'\'进行转义,那么在C#中就是"\\.",第一个'\'是C#用来转义'\',转义过后C#交给Regex类就是'\.',然后再由Regex类进行转义,来匹配'.' ,当然也可以使用C#@取消C#转义.C#中用Regex.IsMatch("要匹配字符","正则表达式")来匹配.  用@取消C#转义,那么在C#中就是Regex.IsMatch(@"\",@"\\"),这里"\\"是正则用来转义,转义过后就是'\',用来匹配字符串"\".  转义用来表达要匹配字符串"\",第二个用@取消了C#转义,用"\\"来对应正则表达式转义 Regex.IsMatch("\\","\\\\") ); Console.ReadKey();

29610
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C#Socket简单使用

    大家好,又见面了,我是你们朋友全栈君。 以前学过Socket,后来没怎么用过,就基本忘了,所以闲来时重新回顾学习一番. 一.Socket概念 Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来一层,是位于应用层和传输控制层之间一组接口. 双向通信连接实现数据交换,连接一端成为一个Socket. 二.网络通信三要素 IP地址(网络上主机设备唯一标识) 端口号(定位程序) 有效端口:0~65535,其中0~1024由系统使用,开发中一般使用1024以上端口. 传输协议(用什么样方式进行交互) 常见协议:TCP(面向连接,提供可靠服务),UDP(无连接,传输速度快) 三.Socket通信流程 四.C#Socket简单使用步骤 第一步:服务端监听某个端口

    8620

    C#反射解析及使用.

    1、对C#反射机制理解 2、概念理解后,必须找到方法去完成,给出管理主要语法 3、最终给出实用例子,反射出来dll方法 参考: C#反射,MSDN编程指南 反射是一个程序集发现及运行过程,通过反射可以得到 在C#,我们要使用反射,首先要搞清楚以下命名空间中几个类关系:     System.Reflection命名空间     (1)   AppDomain:应用程序域,可以将其理解为一组程序集逻辑容器 2点上说明)     使用这个方法时候, CLR会应用一定策略来查找程序集,实际上CLR按如下顺序来定位程序集:     ⑴如果程序集有强名称,在首先在全局程序集缓(GAC)查找程序集。     ⑵如果程序集强名称没有正确指定或GAC找不到,那么通过配置文件<codebase>元素指定URL来查找     ⑶如果没有指定强名称或是在GAC找不到,CLR会探测特定文件夹:     假设你应用程序目录是 这就是在第1点提到Load方法比LoadFrom方法执行效率高原因。另外,由于可能把程序集作为"数据文件"来加载,所以使用 LoadFrom从不同路径加载相同程序集时候会导致重复加载。

    924140

    学习|C#线程AutoResetEvent使用

    ——《微卡智享》 本文长度为3106字,预计阅读8分钟 前言 前一篇《学习|C#EventHandler委托使用》介绍了EventHandler简单使用,本篇主要介绍线程AutoResetEvent 上面就是AutoResetEvent主要方法,从上面的主要方法我们可以看到,实现读卡器每100耗秒进行检测,原来通过线程是sleep进行处理,现在可以使用WaitOne方式,并且通过这个方法,我们可以在外部实现读卡器重连调用 本项目场景 本项目(开头视频)因为读卡器使用网络通讯,所以我们要考虑出现异常情况下实现读卡器自动重连。 如果存在网络中断时候我们要考虑到自动重连。 实际项目中对读卡器操作没法贴上来,这里我们就接着一个DEMO,模拟一下这个场景。 代码演示 ? 微卡智享 接着我们threaddemo,在CTest我们开始改造。 ? 我们在循环操作里面加入一个随机数生成,取值为0到13内 如果取值数字小于10,那就正常发送数据。 如果取值数字等于10,那就直接抛出异常,然后在异常内部模拟Reset重连读卡器。

    41120

    C#如何使用Dapper

    我们可以将它放在项目的任何位置来实现数据到对象ORM操作,它具备体积小且速度快特点。 使用ORM好处是增、删、改会很快,不用自己写sql语句,并且程序中大量从数据库读数据然后创建model,并为model字段赋值,这些ORM都可以替我们完成。 ORM给开发带来便利同时,性能也是一个不得不考虑问题。一般ORM性能和原生sql相比性能都差了不少,但Dapper性能还不错,与DbHelperSQL相比性能高出很多。 使用在存储过程插入、更新和删除情况下,代码如下: string sql = "INSERT INTO user(name) Values (@Name);"; using (var connection User类型 var users= connection.Query<User>(sql).ToList(); } 带参数查询 在Dapper查询中使用参数,代码如下: using (var

    27320

    正则表达式在js使用

    正则表达式创建 在 JavaScript ,可以通过两种方式创建一个正则表达式。 方式一:通过调用RegExp对象构造函数创建 var regexp = new RegExp(/123/); console.log(regexp); 方式二:利用字面量创建 正则表达式 var rg = /123/; 2.测试正则表达式 test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。 var rg = /123/; console.log(rg.test(123));//匹配字符是否出现123 出现结果为true console.log(rg.test('abc'));//匹配字符是否出现

    19420

    C#Log4使用教程

    C#Log4使用教程[完全图解] 没有日志系统是不完整系统,下面小赵四步(三分钟)教会你使用Log4;我去,感觉上面有满满教科书式感觉。 -- 将日志以回滚文件形式写到文件 --> <! --Error--> ``` 第三步 在Program中注册---------这是第一种注册方式 (在这里我踩了一个坑,一定要通过Path.Combine()这种方式注入,我刚开始使用是第一种,结果两个小时原地踏步走 ,我还以为是log4有问题,我在mvc项目中,做法完全一样,但是到NET5就出现了这个问题,在看老张哲学文章时候发现了这个坑,我试了一下,完全ok,我就想上面的那个他也不报错,但就是没有日志) ,在控制器里面先构造,在使用 执行调试,就在项目文件夹下面看到生成日志了 项目地址放在https://github.com/PrideJoy/NetTemple

    34120

    C#Abstract 、Virtual和Override使用

    除了在声明和调用语法上不同外,抽象属性行为与抽象方法一样。在静态属性上使用abstract修饰符是错误。在派生类,通过包括使用 override 修饰符属性声明,可以重写抽象继承属性。 虚拟成员实现可由派生类重写成员更改。调用虚方法时,将为重写成员检查该对象运行时类型。将调用大部分派生类该重写成员,如果没有派生类重写该成员,则它可能是原始成员。默认情况下,方法是非虚拟。 和抽象方法相同点是都用了override关键字进行重写方法,不同点是抽象方法必须存在于抽象类,而子类必须重写,除非子类也是抽象。 4. base和this区别 1)base作用:用于从派生类访问基类成员,调用基类上已被其他方法重写方法。指定创建派生类实例时应调用基类构造函数。 注:从静态方法中使用 base 关键字是错误。 2)区别: base 是子类引用父类,用于在派生类访问重写基类成员。

    28420

    黄聪:在C#如何使用资源图片

    1.新建一个工程,假设桌面有一张图片: 文件名为:1.jpg 2.打开工程下Resources.resx文件 3.添加资源–添加现有文件 4.选择我们桌面的图片,得下图所示 5.在窗体里面拖一个 pictureBox控件: 6.设置Image属性,选择资源_1文件即可,这样我们就能使用资源里面的图片啦 ^^

    28930

    C#正则表达式判断字符串是否有数…

    = 0)                 {                     return;                 } 其中,count为字符串数字个数。

    78320

    C#正则表达式判断字符串是否有数…

    = 0)                 {                     return;                 } 其中,count为字符串数字个数。

    23610

    C#ref和out区别使用

    ref(C# 参考) ref 关键字会导致参数通过引用传递,而不是通过值传递。 通过引用传递效果是,对所调用方法参数进行任何更改都反映在调用方法。 有关如何传递数组信息,请参阅使用 ref 和 out 传递数组(C# 编程指南)。 你不能将 ref 和 out 关键字用于以下几种方法: 异步方法,通过使用 async 修饰符定义。 你还可以使用 ref 关键字传递引用类型。 通过引用传递引用类型可以使所调用方法将调用方法对象替换为引用参数所引用对象。 对象存储位置按引用参数值传递到方法。 Name: Stapler, ID: 12345 out(C# 参考) 你可以在两个上下文(每个都是指向详细信息链接)中使用 out 上下文关键字作为参数修饰符,或在接口和委托中使用泛型类型参数声明 有关传递数组信息,请参阅使用 ref 和 out 传递数组(C# 编程指南)。 你不能将 ref 和 out 关键字用于以下几种方法: 异步方法,通过使用 async 修饰符定义。

    25251

    【swagger】C# swagger 使用及避坑

    3 显示说明 swagger 可以读取代码注释,并显示在网页上。如此一来,我们只需要在代码中将注释写好,就可以生成一份可供他人阅读 API 文档了。 在实际 ASP.NET Web API ,是可以存在 路由相同,HTTP 方法相同,查询参数不同 方法,但不好意思,swagger 不支持,并且会直接报错。 这可以避免报错,但多个方法只会在 swagger 展示一个。治标不治本,不推荐。所以唯一解决方案就是设置成不同路由。不知道这个问题在之后版本中会不会修复。 6 忽略 Model 某些字段 如下图,新建用户时,后台需要一个 User 类作为参数。点击右侧 Model,可以显示 User 类属性及注释。 ? 7 传递 header 调用 api 时,有些信息是放在 HTTP Header ,例如 token。这个 swagger 也是支持

    3.2K20

    如何使用C#Action,Func和Predicate?

    如何使用 Csharp Action, Func,Predicate 本文阅读重点 < 1 如何使用 Csharp Action, Func,Predicate 2 Func 3 C#使用 Action 4 C#使用 Func 5 C#使用 Predicate 译文链接:https://www.infoworld.com/article/3057152 你可以声明一个和类平级委托,也可以嵌套在类。 image.png Func 和 Action 是什么,如何使用C#使用 Action 你可以使用 委托 去实现事件和回调方法,C#委托非常类似于C++函数指针,但是 C# 委托 是类型安全,你可以将方法作为参数传递给委托从而让委托指向该方法。 C#使用 Predicate Predicate 委托常用于检索 collection,下面是 Predicate 语法结构。

    56120

    C#多线程Tread使用案例分享

    简单说,一个正在运行应用程序可以视为一个进程,进程间相互独立,资源不共享,一个进程运行失败不会影响另一个进程运行,一个进程可以启动多个线程。进程入口执行第一个线程被视为主线程。 在.Net应用程序,Main方法作为入口函数,被调用时会启动一个主线程。在任务管理器可以看到进程和线程运行数量多线程:在宏观角度来看是多个线程并发执行。 线程创建(Tread)using System.Threading;Thread thread=new Thread(ThreadTest);//创建无参数线程Thread thread2=new Thread Object  否则无法作为delegate成为Theard参数public void ThreadTest(Object obj){   return;}同一个线程不可以两次调用start,会抛出异常根据线程生命周期来看 'delegate'调用delegate参数不是Object类型

    6800

    FME,如何更优雅使用正则表达式

    使用过程,两者侧重点不同,但都提供对正则表达式支持。但从接触FME2016后,发现FMEStringSearcher和StringReplacer对正则表达式中文匹配不太友好。 ? 之前使用过Python2,在Python2,文本字符串处理,经常需要在encode和decode之间来回切换。一段时间没有使用,又得重新去温故一遍。 在JavaScriptCaller中使用正则表达式,是不需要考虑汉字Unicode编码,把一个汉字当做一个字符一样操作匹配就可以。 图(5) (3)探索结论 通过以上分析我们了解到,在FME利用JavaScriptCaller来使用正则表达式可以更优雅。事实上,如果对于正则表达式比较了解。 ---- 结语 在之前推送,曾经写到过如何在FME中使用正则表达式

    65820

    正则表达式在密码强度匹配使用

    一、背景   今天领导让我写几个正则表达式来对密码做强度验证,听到写正则表达式内心是这样感觉(哈哈,三分钟搞定,今天又可以打鱼了)。 二、解决方法   以第三种为例,这个可以分解为如下需求: 存在数字 存在字母 存在半角符号 长度六位及以上 关键是如何同时满足前三个条件,在我有限知识里并不知道怎么搞,然后只好求助于万能百度了,最终在找了几个小时后发现如下几个关键词 =[abc])只会对作用于后面的123,这个显然是不匹配后整个就不匹配了,然后关键来了名字里有预测两个字,这两个字表名了这个表达式特性:不占用字符,匹配后如果匹配成功就继续匹配了好像从来不存在这个东西一样 pattern) :反向预测先行搜索 概念和上面一样,但是效果是相反,abc(?[abc]),对于abc123是匹配成功,对于abca匹配失败,如下所示: reg = /abc(?! ,来检查是否存在至少一个字母,最后对于需求3表达式如下:(半角字符我用ASCII码里16进制表示) ^(?=.*?\d+.*?)(?=.*?[a-zA-Z]+.*?)(?=.*?

    1.2K30

    正则表达式在工作使用案例

    前言 上次我们学习了正则表达式使用,那今天就以两个现实问题为例,来看看正则表达式妙用,以此来提升工作效率。 案例一 如图,我们需要从基础数据中提取各种括号内内容,这里有多种括号,有中文小括号,还有英文小括号和<>。如果用Excel函数的话也能实现,但是很复杂,我们这里用正则表达式来实现。 ? (1)将表格内容复制到word,记得粘贴时,使用只保留文本。 ? (2)使用Ctrl+H调出替换窗口,使用通配符(这里其实就是使用正则表达式,但是需要注意是,word正则表达式元字符有限,有些字符是没法使用),在查找内容输入: [<>()\(\)] 在替换窗口中输入 (3)最后,复制到Excel即可。 ? 案例二 上文中为了使用正则表达式,需要在word中使用,其一比较麻烦,其二word中正则表达式功能也不强大。所以要使用更复杂功能,就需要使用编程语言了。

    28310

    扫码关注腾讯云开发者

    领取腾讯云代金券