C# 高级教程(3)—— 深入探究正则表达式

C#开发基础之100个常用的C#正则表达式 正则表达式是处理字符串的强大工具,特别是在文本搜索、替换和验证中。本文将100个常用的C#正则表达式进行分类,以帮助我们更快速地找到适合的正则表达式解决方案。1. 基础匹配这些正则表达式用于匹配一些基本的字符或字符串模式。匹配任意字符匹配任意空白字符匹配任意非空白字符匹配任意数字字符匹配任意非数字字符匹配任意字母数字字符匹配任意非字母数字字符匹配任意字母字符匹配任意小写字母匹配任意大写字母2. 数字处理这些正则表达式用于匹配和处理数字相关的字符串。匹配单个数字匹配多位数字匹配十六进制数字。 阅读详情
AI摘要

本文聚焦 C# 中的正则表达式,介绍其概念,它能解决文本检索、匹配难题。阐述了正则表达式由普通字符和元字符组成,讲解了 C# 中 System.Text.RegularExpressions 命名空间下 Regex 类操作正则表达式的方法,还列举了正则表达式特殊符号及示例,助开发者高效处理字符串问题。

        在 C# 的编程世界中,正则表达式是一个强大且实用的工具,它能帮助开发者高效地处理文本检索和匹配等复杂问题。本文将详细介绍正则表达式的概念、组成,以及 C#中 ——System.Text.RegularExpressions 命名空间下 Regex 类的使用。

一、正则表达式概述

        正则表达式,英文名为 Regular Expression,是计算机科学领域的重要概念。它借助数学算法,解决计算机程序里的文本检索、匹配等难题。正则表达式语言专注于字符串处理,在众多编程语言中都得到了广泛支持,C# 也不例外。

  1. 检索:通过正则表达式,从字符串中精准获取所需部分。
  2. 匹配:判断给定字符串是否符合正则表达式设定的过滤逻辑。

        可以将正则表达式理解为定义字符串书写规则的工具,比如判断用户输入的密码是否合法,或者邮箱格式是否正确。

二、正则表达式的组成

        正则表达式由普通字符和特殊字符(即元字符)构成文字模式,该模式描述了在查找文字主体时待匹配的一个或多个字符串。

三、C# 中操作正则表达式

        在 C# 中,System.Text.RegularExpressions 命名空间下的 Regex 类提供了一系列静态方法和委托,用于操作正则表达式。

1. IsMatch 静态方法

该方法用于判断指定字符串是否与正则表达式匹配,返回值为布尔类型,有三个重载方法:

bool IsMatch(string input, string pattern);
  • 参数:
    • input:要搜索匹配项的字符串。
    • pattern:要匹配的正则表达式模式。
  • 返回结果:如果正则表达式找到匹配项,则返回 true;否则,返回 false。

 

bool IsMatch(string input, string pattern, RegexOptions options);
  • 参数:
    • input:要搜索匹配项的字符串。
    • pattern:要匹配的正则表达式模式。
    • options:枚举值的按位组合,提供匹配选项。
  • 返回结果:如果正则表达式找到匹配项,则返回 true;否则,返回 false。

bool IsMatch(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);
  • 参数:
    • input:要搜索匹配项的字符串。
    • pattern:要匹配的正则表达式模式。
    • options:枚举值的按位组合,提供匹配选项。
    • matchTimeout:超时间隔,或 System.Text.RegularExpressions.Regex.InfiniteMatchTimeout 指示该方法不应超时。
  • 返回结果:如果正则表达式找到匹配项,则返回 true;否则,返回 false。

 

2.RegexOptions 枚举类型

RegexOptions 是一个枚举类型,包含以下常用枚举值:

RegexOptions 枚举值内联标志简单说明
ExplicitCapturen只有定义了命名或编号的组才捕获
IgnoreCasei不区分大小写
IgnorePatternWhitespacex消除模式中的非转义空白并启用由 # 标记的注释
MultiLinem多行模式,修改了 ^ 和 $ 的含义
SingleLines单行模式,与 MultiLine 相对应

        内联标志可针对一组正则表达式,更精细地定义匹配选项。

3. Match 静态方法

        该方法使用指定的匹配选项,在输入字符串中搜索指定正则表达式的第一个匹配项,返回一个包含匹配信息的对象。同样有三个重载方法,参数与 IsMatch 方法相同:

Match Match(string input, string pattern);
Match Match(string input, string pattern, RegexOptions options);
Match Match(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

        此外,Regex 类中还有一个同名的非静态方法,在处理多个实例时,效率更高。

 

3. Matches 静态方法

        该方法在指定的输入字符串中搜索指定正则表达式的所有匹配项,与 Match 方法不同,它返回所有匹配项。同样有三个重载方法,参数与 Match 方法完全相同:

MatchCollection Matches(string input, string pattern);
MatchCollection Matches(string input, string pattern, RegexOptions options);
MatchCollection Matches(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

 

4. Replace 方法

        正则表达式主要用于验证、提取、分割和替换字符串,Replace 方法实现了替换功能,有以下四个重载方法:

string Replace(string input, string pattern, string replacement);
  • 参数:
    • input:源字符串。
    • pattern:匹配条件。
    • replacement:替换内容,将符合匹配条件 pattern 的内容替换为此内容。

 

string result = Regex.Replace("abc", "ab", "##");
// 结果是##c,把字符串abc中的ab替换成##
string Replace(string input, string pattern, string replacement, RegexOptions options);
  • 参数:
    • input:源字符串。
    • pattern:匹配条件。
    • replacement:替换内容。
    • options:RegexOptions 枚举类型,用于设定匹配选项,如忽略大小写可使用 RegexOptions.IgnoreCase。

 

string result = Regex.Replace("ABc", "ab", "##", RegexOptions.IgnoreCase);

        对于复杂的替换需求,比如匹配到多种内容,需要将不同内容替换成不同字符,可使用以下两个方法:

 

string Replace(string input, string pattern, MatchEvaluator evaluator);
  • 参数:
    • input:源字符串。
    • pattern:匹配条件。
    • evaluator:一个代理,本质上可理解为一个函数指针,通过代理绑定的函数实现复杂替换。
string Replace(string input, string pattern, MatchEvaluator evaluator, RegexOptions options);
  • 参数:
    • input:源字符串。
    • pattern:匹配条件。
    • evaluator:一个代理。
    • options:RegexOptions 枚举类型,用于设定匹配选项。

 

5. Split 静态方法

        该方法使用正则表达式匹配的位置,将文本拆分为一个字符串数组,有三个重载方法:

string[] Split(string input, string pattern);
string[] Split(string input, string pattern, RegexOptions options);
string[] Split(string input, string pattern, RegexOptions options, TimeSpan matchTimeout);

 

四、正则表达式中的特殊符号与示例

1. @ 符号

        在正则表达式字符串前加上 @ 字符,可防止编译器解析其中的转义字符,使其作为正则表达式的语法(元字符)存在。

string s = @"www.baidu.com \n lkjsdflkj";

2. 定位元字符

字符说明
\b匹配单词的开始或结束
\B匹配非单词的开始或结束
^匹配必须出现在字符串的开头或行的开头
$匹配必须出现在以下位置:字符串结尾、字符串结尾处的 \n 之前或行的结尾
\A指定匹配必须出现在字符串的开头(忽略 Multiline 选项)
\z指定匹配必须出现在字符串的结尾(忽略 Multiline 选项)
\z指定匹配必须出现在字符串的结尾或字符串结尾处的 \n 之前(忽略 Multiline 选项)
\G指定匹配必须出现在上一个匹配结束的地方,与 Match.NextMatch() 一起使用时,确保所有匹配都是连续的
定位元字符示例
// 示例一:匹配开始 ^
string str = "I am Blue cat";
Console.WriteLine(Regex.Replace(str, "^", "准备开始:"));

// 示例二:匹配结束 $
string str2 = "I am Blue cat";
Console.WriteLine(Regex.Replace(str2, "$", " 结束了!"));

 

3. 基本语法元字符

字符说明
.匹配除换行符以外的任意字符
\w匹配字母、数字、下划线、汉字 (指大小写字母、0 - 9 的数字、下划线_)
\W\w 的补集 (除 “大小写字母、0 - 9 的数字、下划线_” 之外)
\s匹配任意空白符 (包括换行符 \n、回车符 \r、制表符 \t、垂直制表符 \v、换页符 \f)
\S\s 的补集 (除 \s 定义的字符之外)
\d匹配数字 (0 - 9 数字)
\D表示 \d 的补集 (除 0 - 9 数字之外)

        在正则表达式中,\ 是转义字符,* 是元字符。若要表示 \、.、* 字符,需使用 \\、\.、\*。

基本语法元字符示例
// 示例一:校验只允许输入数字
string strCheckNum1 = "23423423a3", strCheckNum2 = "324234";
Console.WriteLine("匹配字符串" + strCheckNum1 + "是否为数字:" + Regex.IsMatch(strCheckNum1, @"^\d*$"));
Console.WriteLine("匹配字符串" + strCheckNum2 + "是否为数字:" + Regex.IsMatch(strCheckNum2, @"^\d*$"));

// 示例二:校验只允许输入除大小写字母、0 - 9的数字、下划线_以外的任何字符
string strCheckStr1 = "abcds_a", strCheckStr2 = "**&&((((2", strCheckStr3 = "**&&((((";
string regexStr = @"^\W*$";
Console.WriteLine("匹配字符串" + strCheckStr1 + "是否为除大小写字母、0 - 9的数字、下划线_以外的任何字符:" + Regex.IsMatch(strCheckStr1, regexStr));
Console.WriteLine("匹配字符串" + strCheckStr2 + "是否为除大小写字母、0 - 9的数字、下划线_以外的任何字符:" + Regex.IsMatch(strCheckStr2, regexStr));
Console.WriteLine("匹配字符串" + strCheckStr3 + "是否为除大小写字母、0 - 9的数字、下划线_以外的任何字符:" + Regex.IsMatch(strCheckStr3, regexStr));

4. 反义字符

字符说明
\W\w 的补集 (除 “大小写字母、0 - 9 的数字、下划线_” 之外)
\S\s 的补集 (除 \s 定义的字符之外)
\D表示 \d 的补集 (除 0 - 9 数字之外)
\B匹配不是单词开头或结束的位置
[ab]匹配中括号中的字符
[a - c]匹配 a 字符到 c 字符之间的字符
[^x]匹配除了 x 以外的任意字符
[^adwz]匹配除了 adwz 这几个字符以外的任意字符
反义字符示例
// 示例:查找除ahou这之外的所有字符
string strFind1 = "I am a Cat!", strFind2 = "My Name's Blue cat!";
Console.WriteLine("除ahou这之外的所有字符,原字符为:" + strFind1 + "替换后:" + Regex.Replace(strFind1, @"[^ahou]", "*"));
Console.WriteLine("除ahou这之外的所有字符,原字符为:" + strFind2 + "替换后:" + Regex.Replace(strFind2, @"[^ahou]", "*"));

5. 重复描述字符

字符说明
{n}匹配前面的字符 n 次
{n,}匹配前面的字符 n 次或多于 n 次
{n,m}匹配前面的字符 n 到 m 次
?重复零次或一次
+重复一次或更多次
*重复零次或更多次
重复描述字符示例
// 示例:校验输入内容是否为合法QQ号(备注:QQ号为5 - 12位数字)
string isQq1 = "1233", isQq2 = "a1233", isQq3 = "0123456789123", isQq4 = "556878544";
string regexQq = @"^\d{5,12}$";
Console.WriteLine(isQq1 + "是否为合法QQ号(5 - 12位数字):" + Regex.IsMatch(isQq1, regexQq));
Console.WriteLine(isQq2 + "是否为合法QQ号(5 - 12位数字):" + Regex.IsMatch(isQq2, regexQq));
Console.WriteLine(isQq3 + "是否为合法QQ号(5 - 12位数字):" + Regex.IsMatch(isQq3, regexQq));
Console.WriteLine(isQq4 + "是否为合法QQ号(5 - 12位数字):" + Regex.IsMatch(isQq4, regexQq));

6. 择一匹配

| 字符用于将两个匹配条件进行逻辑 “或”(Or)运算。

择一匹配示例
// 示例一:查找数字或字母
string findStr1 = "ad(d3)-df";
string regexFindStr = @"[a-z]|\d";
string newStrFind = String.Empty;
MatchCollection newStr = Regex.Matches(findStr1, regexFindStr);
newStr.Cast<Match>().Select(m => m.Value).ToList<string>().ForEach(i => newStrFind += i);
Console.WriteLine(findStr1 + "中的字母和数字组成的新字符串为:" + newStrFind);

// 示例二:将人名输出("zhangsan;lisi,wangwu.zhaoliu")
string strSplit = "zhangsan;lisi,wangwu.zhaoliu";
string regexSplitstr = @"[;]|[,]|[.]";
Regex.Split(strSplit, regexSplitstr).ToList().ForEach(i => Console.WriteLine(i));

7. 对正则表达式分组 ()

使用小括号来指定子表达式(也叫做分组)。

分组示例
// 示例一:重复单字符和重复分组字符
Console.WriteLine("请输入一个任意字符串,测试分组:");
string inputStr = Console.ReadLine();
string strGroup1 = @"a{2}";
Console.WriteLine("单字符重复2两次替换为22,结果为:" + Regex.Replace(inputStr, strGroup1, "22"));
// 重复多个字符 使用(abcd){n}进行分组限定
string strGroup2 = @"(ab\w{2}){2}";
Console.WriteLine("分组字符重复2两次替换为5555,结果为:" + Regex.Replace(inputStr, strGroup2, "5555"));

// 示例二:校验IP4地址(如:192.168.1.4,为四段,每段最多三位,每段最大数字为255,并且第一位不能为0)
string regexStrIp4 = @"^(((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?))$";
Console.WriteLine("请输入一个IP4地址:");
string inputStrIp4 = Console.ReadLine();
Console.WriteLine(inputStrIp4 + " 是否为合法的IP4地址:" + Regex.IsMatch(inputStrIp4, regexStrIp4));
Console.WriteLine("请输入一个IP4地址:");
string inputStrIp4Second = Console.ReadLine();
Console.WriteLine(inputStrIp4 + " 是否为合法的IP4地址:" + Regex.IsMatch(inputStrIp4Second, regexStrIp4));

五·结语

        通过对正则表达式的深入学习,我们能够在 C# 编程中,更高效地处理字符串相关的复杂问题。

C#语言的正则表达式 正则表达式(Regular Expressions,简称Regex)是一种强大而灵活的字符串处理工具,它可以用来匹配、搜索和替换文本中的模式。在C#中,正则表达式是一种非常重要的工具,因为它可以帮助我们轻松地处理字符串数据,进行复杂的模式匹配。在本文中,我们将详细探讨C#语言中的正则表达式,包括其基本概念、常用方法、应用示例以及一些最佳实践。 阅读详情

相关推荐

C#知识点整理(2)-高级语言学习模型的建立之深入剖析委托

1.引言:学习学习再学习,这不是鸡汤,展开了讲是学习了学习的方法论再去学习。这是李笑来先生提倡的一种终身学习思维。面对一个新的知识体系,我们不应仅仅只依赖于感性思维和过去经历所累积下来的经验,而要理性的思考,这门学科是如何建立的、前人是如何探索学习这门学科的等等。理解了这种思维,才能一直保持学习效率上的高效。本篇文章介绍了一种高级语言学习模型,换句话说是我在学习C#的过程中搭建起来的一个知识框架。文

KingArthur_Tao的博客 743

C#正则表达式实例

狼牙者.net 博客园 首页 新随笔 联系 订阅 管理 随笔 - 74文章 - 75评论 - 5 C# 正则表达式大全 文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串。正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法。...

weixin_30421809的博客 3600

数据库国产化探究及升级改造过程指导

当前官网最新版本为DM8,相较于目前主流产品架构:不同特性依靠不同内核去实现,DM8独特采用了双存储引擎架构,行存储引擎和列存储引擎可相互配合、协同工作。同时实现了计算层和存储层的分离,同一内核既支持共享存储式集群,也支持分布式事务集群。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 5369

【C#基础】C# 正则表达式

编程语言 C# 正则表达式的介绍。

好学若饥,谦卑若愚。 1万+

Unity全球化开发:字符串比较陷阱与多语言处理实战指南

在软件开发中,字符串处理是基础且高频的操作,其核心在于如何准确比较和匹配文本数据。字符串比较的原理涉及字符编码、二进制序列对比以及文化规则应用,不同的比较方式会直接影响程序的确定性和用户体验。理解并正确应用序数比较、文化敏感比较等技术,对于构建健壮、可维护的代码具有重要价值,尤其在需要处理用户输入、数据验证和资源管理的应用场景中。本文聚焦Unity3D游戏开发,深入剖析全球化背景下字符串比较的典型陷阱,例如因文化差异导致的**大小写映射**错误和**组合字符**等价性问题,并提供了一套覆盖玩家输入验证、资源

weixin_34252090的博客 694

C# 正则表达式完全指南:基础、进阶与实战示例

C#中的正则表达式是一种强大而灵活的文本处理工具,它利用预定义的模式来匹配、提取、替换或分割字符串中的特定内容。本文将深入探讨C#中正则表达式的概念、基本结构、常用元字符、量词、分组、反向引用、替换以及正则表达式选项,并通过丰富的代码示例和详细注释来演示如何在实际编程中有效地使用它们。

java专栏 3672

python编程入门第3版pdf-Python核心编程第3版PDF电子书免费下载

本书是经典畅销图书《Python 核心编程(第二版)》的全新升级版本,总共分为 3 部分。第 1 部分讲解了 Python 的一些通用应用,包括正则表达式、网络编程、Internet 客户端编程、多线程编程、GUI 编程、数据库编程、Microsoft Office 编程、扩展 Python 等内容。第 2 部分讲解了与 Web 开发相关的主题,包括 Web 客户端和服务器、CGI 和 WSGI ...

q6q6q的专栏 1274

C#网络爬虫核心类源码详解与应用

本文还有配套的精品资源,点击获取 简介:本源码项目聚焦于如何使用C#语言开发高效的网络爬虫系统,涵盖了从网页内容采集到数据处理的完整流程。项目提供了包括HTTP请求、HTML解析、反反爬虫策略等在内的核心功能模块,允许开发者快速构建个性化的网络爬虫,以自动化的方式采集和分析网页数据。 1. 网页数据采集基础 在当今的数字化时代,网页数据采集成为了信息获取的重要手...

weixin_35649491的博客 1975

python编程入门第三版pdf-Python核心编程第3版PDF电子书免费下载

本书是经典畅销图书《Python 核心编程(第二版)》的全新升级版本,总共分为 3 部分。第 1 部分讲解了 Python 的一些通用应用,包括正则表达式、网络编程、Internet 客户端编程、多线程编程、GUI 编程、数据库编程、Microsoft Office 编程、扩展 Python 等内容。第 2 部分讲解了与 Web 开发相关的主题,包括 Web 客户端和服务器、CGI 和 WSGI ...

weixin_37988176的博客 1482

BreakPoint.Hex.Workshop.v6.7.3.5308:十六进制编辑器实战解析

在IT领域,十六进制编辑软件是不可或缺的工具之一,它允许用户对文件、磁盘映像或内存进行底层的查看与修改。本章将从基础层面概述十六进制编辑软件的概念、功能和它在行业中的发展。十六进制编辑软件是一种能够查看和编辑文件、磁盘或内存数据的二进制形式的工具。不同于文本编辑器,这类软件可以显示原始的二进制数据,并允许用户对这些数据进行直接操作。自定义设置功能极大地提升了用户的个性化体验。用户可以根据自己的习惯来设定编辑器的行为,比如字体大小、颜色主题等。快捷键配置是提升编辑效率的另一重要方面。

weixin_36369848的博客 1380

VMware VSAN 高级参数介绍(测试用)

VSAN 的策略驱动让我们看到了VSAN无穷的潜力,其设计思路相当新颖,在一个基础资源池上使用策略就能实现不同对象的区分服务,而目前没有其他厂家能到VMware这样的高度。 VSAN 呈现给用户配置很简单,但实际上设计及后台比较复杂。笔者无意间发现了VSAN的隐藏高级参数设置,有很多好玩的选项想分享出来。这些参数全部是针对每主机进行设置的。VSAN 中有很多默认设置,这些设置应该都是研发人员多次测试得出的最优值,修改可能导致环境异常,并不建议修改! 目录 参数1:全闪配置下 SSD 写缓存最大.

山水牧羊 2030

爬虫自学——day1

爬取dangdangTOP500书籍遇到的知识点 我们认为HTML类——标签树——BeautifulSoup类,这三者是等价的 python中的group方法 group()在正则表达式中用于获取分段截获的字符串,解释如下代码(代码来自网络): import re a = “123abc456” print re.search("([0-9])([a-z])([0-9])",a).group(0)...

weixin_44887170的博客 221

ArcGIS基础:点要素分割线要素和提取线要素的交点

第一个实验:【点要素分割线要素】看下原始数据:下图所示,2个红点和一条绿线,用2个点去分割这条线。 找到【数据管理工具】,在找到【要素】,再找到【在点处分割线】,如下图所示。 输入线、点要素,然后在【搜索半径】里输入5米,查看一下结果。 查看结果发现,线段被分割了2段,我们查看一下原因。 发现第2个点与线有一段距离,肯定是大于5米的,所以分割没有成功。可以量测一下距离,重新输入搜索半径。 我们把搜索半径改为200米,勘察结果,被点分割了3段。 接下来使用另外一个工具【在折点处分割线】,如下所示。

yuanYW7556的博客 1万+

python核心编程|一本书,玩转python!

CGI给了服务器生成另外一个程序的能力,让这个程序来进行数据处理(长久以来一直也是这么做的),但是该程序不具备扩展性,因此并不会在实践中使用。此外,该章还将介绍当框架开发人员需要在一端连接Web服务器而应用程序的代码放在另外一端时,WSGI如何提供帮助,以便应用开发人员能够在无须担心执行平台的情况下编写代码。在掌握了该章的内容后,你可以探讨该章介绍的其他类似服务。在该章最后一节,我们将前面学到的客户端/服务器知识融合到XML中,以查看如何使用XML-RPC来创建在线的远程过程调用(RPC)。

Saki_Python的博客 339

通过薄膜太阳能电池中的热激电流量化陷阱状态

发光(led)和光伏(PV)器件的性能取决于光活性半导体材料的质量。由于材料杂质或在制造过程中在半导体材料中无意地引入缺陷,导致偏离最佳性能。这些缺陷被称为阱态,或简称“阱”,它是半导体带隙内的高能态。一般来说,陷阱的发生可能是由于材料杂质(在散装)或在不同材料层之间的界面。在有机半导体中,由于天然物质的无序性,阱态经常出现。在无机和杂化半导体(例如:杂化钙钛矿、硅……)中,晶界的存在是圈闭态的已知来源。由于陷阱产生的原因多种多样,它们对装置的影响也是多种多样的。由于载流子的多次捕获和释放事件,特别是浅阱的

FluximAG的博客 2848

ComfyUI中一个超好用的变量管理类节点-KJNodes

在AI绘图中,ComfyUI的热度开始慢慢起来一些,但是这个软件在使用的过程中,需要很多连线,仅仅一个最简单的动画生成,就需要连接这么多线条,而且有些线会飞的很远,看起来就很不美观,尤其是一些复杂工作流,连接到最后自己可能已经分不太清楚到底连接好了没有。今天在研究C站的大佬们的工作流的时候,发现一个有意思的工作流,看起来大概是这种感觉:干净整洁。他用到了KJNodes这么个节点来管理变量,git上星标也不算很多,所以我想很多朋友可能还不知道,所以这里简单介绍下用法。

聚梦小课堂 7518

如何不更新游戏就升级或回退 DLSS 版本:DLSS Swapper 实战指南

DLSS Swapper 是 Windows 工具,把游戏里的 DLSS、FSR、XeSS 动态库换成新版或旧版,不用等游戏更新。适合修伪影、尝新版的玩家;原始 DLL 自动备份,随时退回。下文先讲能力边界,再装好工具跑通首次换版。 [![DLSS Swapper 主界面:游戏卡片显示当前 DLSS 版本号](https://raw.gitcode.com/GitHub_Trending/dl/

gitblog_00128的博客 809

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

深入解析Java String不可变性的设计与实现

在Java编程中,不可变对象是指一旦创建其状态就不能被修改的对象。String类的不可变性通过final类声明、私有final字符数组和封装机制实现,这种设计带来了线程安全、内存优化和安全性等多重优势。从技术原理看,不可变性使得字符串池(String Pool)成为可能,显著减少内存消耗,同时支持哈希码缓存优化,提升HashMap等集合的性能。在实际工程中,不可变字符串常用于URL处理、安全敏感场景和并发编程。对于需要频繁修改字符串的场景,Java提供了StringBuilder和StringBuffer两

weixin_33797791的博客 321

FPGA+滨淞CCD实战:手把手教你搭建S7031/S10142成像电路(附避坑指南)

本文详细介绍了使用FPGA驱动滨淞CCD传感器(S7031/S10142)构建高精度成像系统的完整实战流程。内容涵盖核心器件选型、系统架构规划、电路板(焦面板与接口板)设计要点、FPGA Verilog逻辑实现,并提供了从电源管理、信号调理到数据采集的详细避坑指南,帮助读者从零搭建稳定可靠的成像电路。

weixin_29271263的博客 227

基于深度强化学习的无地图移动机器人导航:让机器人在未知环境中智能前行

虽然仍然面临sim-to-real差距、安全性保证等挑战,但随着算法的不断改进和计算能力的提升,基于DRL的无地图导航技术将在服务机器人、工业自动化、太空探索等领域发挥越来越重要的作用,为人类生产和生活带来更大便利和价值。对于复杂环境下的动态目标导航问题,研究人员提出了多智能体协同控制算法(如Teamwork-Net算法),通过多个智能体分别控制机器人的运动速度与运动方向,协同实现更高效、更稳定的导航性能。深度强化学习结合了深度学习的感知能力和强化学习的决策能力,非常适合解决无地图导航问题。

weixin_45131592的博客 901

C#--正则表达式

文章目录正则表达式简介正则表达式的组成正则表达式的优先级正则表达式匹配规则字符匹配中括号表达式重复匹配替换和分组正则表达式涉及的基本类Regex类Match类 正则表达式简介 正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法可以快速地分析大量的文本以找到特定的字符模式;提取、编辑、替换或删除文本字符串;或将提取的字符串添加到集合以生成报告。对于处理字符串(例如HTML处理、日志文件分析和HTTP标头分析)的许多应用程序而言,正则表达式是不可缺少的工具。 正则表达式的组成

qq_951274168的博客 4511

ABAP CDS View 从入门到精通教程第一篇:ABAP CDS View 在 SAP 技术体系中的重要地位

摘要:本文介绍了SAP开发技术专家提供的多套SAP开发教程,涵盖ABAP、UI5、Fiori、OData、BTP等技术领域。重点阐述了ABAP CDS View在SAP S/4HANA中的核心地位,作为虚拟数据模型(VDM)的关键技术,它实现了OLTP和OLAP的统一处理。文章还说明了学习CDS View的前置条件,包括需要SAP NetWeaver 7.50 SP01或更高版本系统,以及使用SAP ABAP Development Tool进行开发实践。作者具有16年SAP开发经验,这些教程形成了完整的S

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 895

C#正则表达式用法总结

判断用户输入的密码是否合法,判断用户输入的邮箱格式是否合法.

qq_42980743的博客 2万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C# 正则表达式大全

正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串。正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法。Regex 类表示不可变(只读)的正则表达式。它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类。

weixin_42565127的博客 3638

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

常用正则表达式

"^\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\d+$" //整数 "^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|...

aome1470的博客 299

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: C# 高级教程(2)—— 深入理解字符串相关类型
下一篇: Windows 系统下用 VMware 安装 CentOS 7 虚拟机超详细教程(包含VMware和镜像安装包)
Unity黑马王子
博客等级 码龄4年 1846粉丝 181原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值