当前位置: 首页 > 编程日记 > 正文

正则表达式整理

1.特殊字符

^匹配输入字符串的开始位置
$匹配输入字符串的结尾位置
( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
?匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
.匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
标记一个中括号表达式的开始。要匹配 [,请使用 \[。
将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("
 {标记限定符表达式的开始。要匹配 {,请使用 \{。
|指明两项之间的一个选择。要匹配 |,请使用 \|。

2. 限定符

*匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

3.定位符

用来描述字符串或单词的边界,^$分别指字符串的开始与结束,\b描述单词的前或后边界,\B表示非单词边界。不能对定位符使用限定符。

示列:

1.

2.

3. 常用正则表达式

3.1、校验数字的表达式

  • 数字:^[0-9]*$
  • n位的数字:^\d{n}$
  • 至少n位的数字:^\d{n,}$
  • m-n位的数字:^\d{m,n}$
  • 零和非零开头的数字:^(0|[1-9][0-9]*)$
  • 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$
  • 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$
  • 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
  • 有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$
  • 有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$
  • 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
  • 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
  • 非负整数:^\d+$ 或 ^[1-9]\d*|0$
  • 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  • 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
  • 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
  • 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
  • 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
  • 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

3.2 校验字符的表达式

  • 汉字:^[\u4e00-\u9fa5]{0,}$
  • 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
  • 长度为3-20的所有字符:^.{3,20}$
  • 由26个英文字母组成的字符串:^[A-Za-z]+$
  • 由26个大写英文字母组成的字符串:^[A-Z]+$
  • 由26个小写英文字母组成的字符串:^[a-z]+$
  • 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
  • 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
  • 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
  • 禁止输入含有~的字符:[^~\x22]+

3.3、特殊需求表达式

  • Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
  • 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  • 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
  • 电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号): ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
  • 身份证号(15位、18位数字),最后一位是校验位,可能为数字或字符X:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
  • 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  • 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
  • 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
  • 强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  • 日期格式:^\d{4}-\d{1,2}-\d{1,2}
  • 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
  • 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
  • 钱的输入格式:
    1. 有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
    2. 这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$
    3. 一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$
    4. 这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$
    5. 必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$
    6. 这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$
    7. 这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
    8. 1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
    9. 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
  • xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
  • 中文字符的正则表达式:[\u4e00-\u9fa5]
  • 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
  • 空白行的正则表达式:\n\s*\r (可以用来删除空白行)
  • HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
  • 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
  • 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
  • IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

注:正则表达式中第一个斜杠和最后一个斜杠/,是js等语法中的写法,java中不需要。

4. 正则中的一些高级应用

4.1  *、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

如:搜索如下html内容中H1标记内的内容<H1>test1</H1><H1>test2</H1>

贪婪:  表达式<.*> 匹配从开始小于符号 (<) 到关闭 H1 标记的大于符号 (>) 之间的所有内容。

  <H1>test1</H1><H1>test2</H1>




非贪婪:表达式<.*?> 只需要匹配开始和结束 H1 标签,只匹配 <H1>。

4.2 分组捕获和引用

捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。

捕获组有两种形式,一种是普通捕获组,另一种是命名捕获组,通常所说的捕获组指的是普通捕获组。语法如下:

普通捕获组:(Expression)

命名捕获组:(?<name>Expression)

捕获组编号规则是以数字为捕获组进行编号的规则,按照“(”出现的顺序,从左到右。编号为0的捕获组指的是正则表达式整体。

看列子:

1.普通捕获组

    private static void fun1(){String str = "13917230833-18817010863";String pattern = "(\\d{3})(\\d{4})(\\d{4})";Pattern r = Pattern.compile(pattern);Matcher m = r.matcher(str);while(m.find()){System.out.println("分组数量:" + (m.groupCount() +1));System.out.println("查找内容(0):" + m.group(0));System.out.println("查找内容(1):" + m.group(1));System.out.println("查找内容(2):" + m.group(2));System.out.println("查找内容(3):" + m.group(3));}}

执行:

2.命名捕获组

    private static void fun2(){String str = "13917230833";String pattern = "(?<one>\\d{3})(?<two>\\d{4})(\\d{4})";Pattern r = Pattern.compile(pattern);Matcher m = r.matcher(str);while(m.find()){System.out.println("分组数量:" + (m.groupCount() +1));System.out.println("查找内容(0):" + m.group(0));System.out.println("查找内容(1):" + m.group(1));System.out.println("查找内容(one):" + m.group("one"));System.out.println("查找内容(2):" + m.group(2));System.out.println("查找内容(two):" + m.group("two"));System.out.println("查找内容(3):" + m.group(3));}}

执行:

对捕获组的引用一般有以下几种:

1)       正则表达式中,对前面捕获组捕获的内容进行引用,称为反向引用;

2)       正则表达式中,(?(name)yes|no)的条件判断结构;

3)       在程序中,对捕获组捕获内容的引用。

看下反向引用的列子:

    private static void fun4(){//匹配重复的单词String str = "aa aa dd dd";String pattern = "\\b(\\w+)\\b\\s+\\1\\b";Pattern r= Pattern.compile(pattern);Matcher m = r.matcher(str);while(m.find()){System.out.println("分组数量:" + (m.groupCount() +1));System.out.println("查找内容(0):" + m.group(0));System.out.println("查找内容(1):" + m.group(1));
//            System.out.println("查找内容(2):" + m.group(2));
        }}

4.3 ?= 和 ?! 和?: 三种的用法

前瞻: exp1(?=exp2) 查找exp2前面的exp1,即查找exp1且exp1后面是exp2

后顾: (?<=exp2)exp1 查找exp2后面的exp1,即查找exp1且exp1前面是exp2

负前瞻: exp1(?!exp2) 查找后面不是exp2的exp1,即查找exp1且exp1后面不是exp2

负后顾: (?<!=exp2)exp1 查找前面不是exp2的exp1,即查找exp1且exp1前面不是exp2

示列:

1.查找后面是</a>前面是">的内容,即a标签内的内容。非贪婪

2.贪婪

对于?:  就需要了解非捕获存储、

看下下面的列子:(?<=(?:\">)).*?(?=(?:</a>))

欢迎扫码交流:

转载于:https://www.cnblogs.com/gexiaoshan/p/10254323.html

相关文章:

CSS-hover

1. padding:0 10px; 表示上下边距是0&#xff0c;左右边距是10. 2. padding:0 10px 0 10px&#xff1b; 上-右-下-左。&#xff08;顺时针方向&#xff09; 3. .pg-header .menu:hover&#xff1b; 表示只要鼠标移动到当前标签上时&#xff0c;就会应用这个下面所定义的样式。 …

Error原生类型

•表示错误对象 –EvalError, URIError, RangeError, etc. •捕获方式&#xff1a; –try { …throw new Error(…) } catch(e) { … } –理论上可以throw出任意对象 •Error对象IE和FireFox公有属性 –message&#xff1a;错误信息Error浏览器特定属性 •IE&#xff1a; –des…

求矩阵两条对角线元素之和

#include <stdio.h> #include <stdlib.h>int main() {int a[3][3];//定义一个二维数组&#xff0c;三行三列&#xff0c;a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[3][0],a[3][1],a[3][2]int i,j,sum0;printf("请输入9个数据给数组赋值:\n");f…

关于Java中各种修饰符与访问修饰符的说明

关于Java中各种修饰符与访问修饰符的说明 类&#xff1a; 访问修饰符 修饰符 class 类名称extends 父类名称 implement 接口名称 &#xff08;访问修饰符与修饰符的位置可以互换&#xff09;访问修饰符 名称 说明 备注 public可以被所有类访问&#xff08;使用&#xff0…

buffer IO和direct IO

最近在看很多框架&#xff0c;redis&#xff0c;kafka等底层都涉及到文件IO操作的效率问题&#xff0c;所以查了些资料&#xff0c;看到这篇文章讲的比较明白些&#xff0c;贴出来留存。 链接地址&#xff1a; https://www.ibm.com/developerworks/cn/linux/l-cn-directio/转载…

python 列表使用

下面实现的类似于java中的数组&#xff1a; names[-2]表示实现倒数的第2个参数 names[-3,-1]表示实现-3到-1的值不包含-1 增删改查 下面代码实现列表的增删改查功能&#xff1a; 复制copy 深copy:这个可以copy全部的参数列表&#xff08;一般不用&#xff09;。 For循环打印列表…

c语言——求单词个数

#include <stdio.h> #include <stdlib.h>int main() {char str[20];//定义一个字符型一维数组&#xff0c;长度为20int i,num;printf("请输入一行英文:\n");//提示语句gets(str);//输入一个字符串给字符数组strnum str[0]! ? 1:0;//? : 是条件运算符…

C# 各种进制之间相互转换 [ZT]

MessageBox.Show(Convert.ToString(12345, 2)); //10进制转换为2进制MessageBox.Show(Convert.ToString(12345, 8)); //10进制转换为8进制MessageBox.Show(Convert.ToString(12345, 16)); //10进制转换为16进制MessageBox.Show(Convert.ToInt32("1100", 2).ToStri…

慕课《深入理解计算机系统》袁林枫老师章节测试1-9

1以下有关冯.诺依曼结构思想的叙述中&#xff0c;错误的是&#xff08; C &#xff09;。 A.计算机内部以二进制形式表示指令和数据 B.程序由指令构成&#xff0c;计算机能自动执行程序中一条一条指令 C.指令和数据都放在存储器中&#xff0c;两者在形式上有差别&#xff08…

WCF 和 ASP.NET Web API

地址&#xff1a;https://docs.microsoft.com/zh-cn/dotnet/framework/wcf/wcf-and-aspnet-web-api WCF 是 Microsoft 为生成面向服务的应用程序而提供的统一编程模型。 借助这一模型&#xff0c;开发人员可以构建既能跨平台与现有投资集成又能与现有投资交互的安全、可靠的事务…

php中操作mysql的函数库

发现php中的mysql库是一个函数库 而不是一个类库 使用面向过程的形式组织。mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数 mysql_change_user -- 改变活动连接中登录的用户 mysql_client_encoding -- 返回字符集的名称 mysql_close -- 关闭 MySQL 连接 mysq…

Firetruck UVA - 208

DFS并查集 如果只用DFS的话会超时&#xff0c;用并查集剪枝&#xff0c;和起点终点不联通的点就不用跑了 这题有好多人写了博客&#xff0c;但是我觉得我的代码写的比较通俗易懂所以就贴上来了&#xff0c;我觉得我写代码的目标就是让任何人都能看懂&#xff0c;越小白越好&…

MCSE2003学习之三

安装&#xff37;&#xff29;&#xff2e; &#xff38;&#xff30;&#xff38;&#xff30;的系统中&#xff0c;&#xff13;&#xff12;位的系统最大支持的&#xff32;&#xff21;&#xff2d;为&#xff14;&#xff27;&#xff0c;而&#xff16;&#xff14;位的…

【LeetCode】230#二叉搜索树中第K小的元素

题目描述 给定一个二叉搜索树&#xff0c;编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明&#xff1a; 你可以假设 k 总是有效的&#xff0c;1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root [3,1,4,null,2], k 13/ \1 4\2 输出: 1 示例 2: 输入: root …

runaway深度递归函数测试及相关汇编指令

这是一个深度递归的例子。 #include <stdio.h> #include <stdlib.h>int recurse(int x) {int a[1<<15]; /* 4 * 2^15 64 KiB */printf("x %d. a at %p\n", x, a); a[0] (1<<14)-1;a[a[0]] x-1;if (a[a[0]] 0)return -1;return rec…

codeforce843B Interactive LowerBound

题意&#xff1a;交互式的题&#xff0c;给你n,s, x&#xff0c;链表元素有n个&#xff0c;开始的位置是s&#xff0c;每次询问输入数组的下标&#xff0c;可以知道对应链表上的数和链表下一个数的位置&#xff0c;只能询问2000次&#xff0c;要找到第一个大于等于x的数 题解&a…

[原]SSL 开发简述(Delphi)

一、 简介 现在网上有关SSL的资料较多的是基于VC开发&#xff0c;Delphi的SSL开发资源很少。 本文主要使用OpenSSL为基础&#xff0c;讲述SSL的有关开发流程。OpenSSL功能非常丰富&#xff0c;具体可以去她的官方网看看。可惜没有中文说明。 OpenSSL&#xff1a;htt…

如何每天自动备份 SourceSafe (转)

在Microsoft Visual SourceSafe中提到管理员应该每天或者至少每周备份一次SourceSafe中的内容。这里&#xff0c;我们利用现有的工具实现每天自动备份SourceSafe中的内容。<?XML:NAMESPACE PREFIX O />1. 用到的工具a. ssarc.exe. ssarc.exe是随着SourceSafe提供…

log.net的应用示例(日志)

log.net的应用很多朋友很清楚&#xff0c; 为了使不会用的朋友快速了解&#xff0c;这里我也搜了一些朋友的贴子http://blog.hnce.net/post/246.html后做如下示例&#xff0c;希望能对大家有所帮助&#xff1a; 示例如下&#xff1a; log4net的配置文件link Log4Net.config1&l…

H国的身份证号码(搜索)

个人心得&#xff1a;巧妙利用数字进行维护就好了&#xff0c;深搜还是有点心得的&#xff1b; #1558 : H国的身份证号码I 时间限制:10000ms单点时限:1000ms内存限制:256MB描述 H国的身份证号码是一个N位的正整数(首位不能是0)。此外&#xff0c;由于防伪需要&#xff0c;一个N…

Linux命令之more

more [选项] 文件 […] more是一个过滤器&#xff0c;用于一次浏览一个屏幕的文本。 在more过滤器下有一些常用键&#xff0c;<Space>表示显示下一屏内容&#xff1b;<Enter>表示显示文本的下一行内容&#xff1b;<H>显示帮助&#xff1b;<B>上一页&am…

图的创建及深度遍历

#include <iostream> using namespace std; #include <malloc.h> #include <stdio.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2#define INFINITY INT_MAX //最大值为无穷大 #define MAX_VER…

showModalDialog 传值及刷新

(一)showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口. farther.html --------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITL…

简单实现ConfigurationManager.AppSettings[]效果存储系统变量

代码一:存储变量和常量的Class.Code1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.Collections.Specialized; 5 6namespace TestTemp.ConsoleApp 7{ 8 public class Config 9 {10 string[] keys new string[] { "N…

数据结构|-常见数据结构整理

归纳总结了一下数据机构的常用类型&#xff0c;个人理解常用的数据机构可以分为线性表、栈、队列、树&#xff0c;线性表包括顺序表和链表&#xff0c;栈和队列应当属于特殊的线性表&#xff0c;有几个概念和误区需要先说一下 顺序表和线性表的关系&#xff1a; 线性表是逻辑概…

数据结构课程上机参考代码

SqList #include <iostream>using namespace std;#include <malloc.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status; /* int是函数的类型,其值是函数结果状态代码&#xff0c;如OK等 */…

我的路子 - 发现游戏为模型的软件架构方式

总觉得如果一个内容被深刻地理解了&#xff0c;那么当在他口中说出来的时候&#xff0c;应该是很简单才对。 所以一直觉得&#xff0c;编程里那些不容易理解的&#xff0c;需要记住很多内容的东西都是有缺陷的。自己又比较自我认可强&#xff0c;看不到别人的角度&#xff0c;表…

Vim对中文编码的支持[转]

Vim对中文编码的支持[转] Vim对中文编码的支持 1、支持中文编码的基础 Vim要更好地支持中文编码需要两个特性&#xff1a;multi_byte和iconv&#xff0c;可以用|:version|命令检查当前使用的Vim是否支持&#xff0c;否则的话需要重新编译。 2、影响中文编码的设置项 Vim中有几个…

C/C++中extern关键字详解

1 基本解释 &#xff1a;extern可以置于变量或者函数 前&#xff0c;以标示变量或者函数的定义在别的文件中 &#xff0c;提示编译器遇到此变量和函数时在其他模块中寻找其定义 。此外extern也可用来进行链接指定。 也就是说extern有两个作用&#xff0c;第一个,当它与"C&…

关于WPF的ComboBox中Items太多而导致加载过慢的问题

【WFP疑难】关于WPF的ComboBox中Items太多而导致加载过慢的问题 周银辉我的一个同事在加载字体列表时遇到了一个让人崩溃的问题&#xff1a;由于系统字体可能较多&#xff08;可能有好几百项&#xff09;&#xff0c;导致使…