编程基础概念 表达式、 逻辑运算符、字符集编码、ASCII、正则表达式
当我们在编程时,会遇到一些基本概念,如表达式、逻辑运算符、字符集编码(如ASCII)、以及正则表达式。下面我将逐一解释这些概念:
- 表达式(Expression)
定义:表达式是编程中的一个基础概念,它可以是变量、常量、函数、运算符和它们之间的组合。
用途:用于描述程序中的数据值或操作。
示例:x + 5 是一个简单的表达式,其中 x 是一个变量,5 是一个常量,+ 是一个运算符。
- 逻辑运算符(Logical Operators)
定义:逻辑运算符用于比较两个或多个值,并返回一个布尔值(真或假)。
常见的逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)。
示例:在 if (x > 5 && y < 10) 中,x > 5 和 y < 10 是两个比较表达式,&& 是一个逻辑与运算符,整个表达式将返回一个布尔值。
- 字符集编码(Character Set Encoding)
定义:字符集编码是一种将字符(如字母、数字、标点符号等)映射到数字(通常是二进制数)的方式,以便计算机能够存储和处理这些字符。
用途:实现文本数据的存储、传输和显示。
示例:ASCII(美国信息交换标准代码)是一种常用的字符集编码,它使用7位或8位二进制数表示字符。
- ASCII(American Standard Code for Information Interchange)
定义:ASCII 是一种字符编码标准,用于电子通信。它定义了128个或256个字符,包括英文字母(大写和小写)、数字(0-9)、标点符号、控制字符等。
特点:ASCII 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
示例:字符 ‘A’ 在 ASCII 编码中对应的数字是 65(十进制),其二进制表示是 01000001。
- 正则表达式(Regular Expression)
定义:正则表达式是一种强大的文本处理工具,它使用一种特殊的语法来描述字符模式,这些模式可以用来匹配、查找和替换文本中的字符序列。
用途:用于数据验证、文本搜索和替换、文本分析等任务。
示例:正则表达式 \d+ 可以匹配一个或多个数字(\d 表示数字,+ 表示一个或多个)。
这些基础概念在编程中非常重要,它们帮助我们描述和操作数据,实现各种复杂的逻辑和文本处理功能。
Flag
各种表达式以及编码
进制
进制 | 英文 | 范围 | 前缀 | 后缀 |
---|---|---|---|---|
二进制 | Binary | 0-1 | 0b | B |
八进制 | Octal | 0-7 | 0/0O | O |
十进制 | Decimal | 0-9 | 无 | D |
十六进制 | Hexadecimal | 0-9, A-F | 0x | H |
逻辑运算符
运算符 | 说明 |
---|---|
AND | 与(&& ) |
NOT | 非(! ) |
OR | 或(` |
EQ | EQUAL等于(== ) |
NE | NOT EQUAL不等于(!= ) |
GT | GREATER THAN大于(> ) |
GE | GREATER THAN OR EQUAL 大于等于(>= ) |
LT | LESS THAN小于(< ) |
LE | LESS THAN OR EQUAL 小于等于(<= ) |
字符集编码
Unicode
- https://github.com/unicode-org
- https://unicode.org/reports/tr44/#GC_Values_Table
- https://emojipedia.org
- https://github.com/topics/emoji
- https://github.com/rotick/searchemoji
- https://github.com/hfg-gmuend/openmoji
Unicode | 意义 |
---|---|
u0024 | $ |
u0028 | ( |
u0029 | ) |
u002A | * |
u002B | + |
u002E | . |
u003F | ? |
u005B | [ |
u005C | \ |
u005E | ^ |
u007B | { |
u007C | ` |
u007D | } |
u0009 | t |
u000A | n |
u000D | r |
u0022 | " |
u002C | , |
u003A | : |
- GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换
- GBK、GB2312 -> Unicode -> UTF8
- UTF8 -> Unicode -> GBK、GB2312
Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,
它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,
为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大。
零宽度字符/零宽字符
零宽度字符是一些不可见的,不可打印的字符。
不可见且不占位置字符:
\u200D\u202A\u202B\u202C\u202D\u202E\u2060\u2061\u2062\u2063\u2064\u2065\u206A\u206B\u206C\u206D\u206E\u206F
- https://github.com/yuanfux/zero-width-lib
- https://github.com/330k/misc_tools
- https://github.com/rover95/morse-encrypt
- 零宽度空格符 (zero-width space) U+200B : 用于较长单词的换行分隔
- 零宽度非断空格符 (zero width no-break space) U+FEFF : 用于阻止特定位置的换行分隔
- 零宽度连字符 (zero-width joiner) U+200D : 用于阿拉伯文与印度语系等文字中,使不会发生连字的字符间产生连字效果
- 零宽度断字符 (zero-width non-joiner) U+200C : 用于阿拉伯文,德文,印度语系等文字中,阻止会发生连字的字符间的连字效果
- 左至右符 (left-to-right mark) U+200E : 用于在混合文字方向的多种语言文本中(例:混合左至右书写的英语与右至左书写的希伯来语),规定排版文字书写方向为左至右
- 右至左符 (right-to-left mark) U+200F : 用于在混合文字方向的多种语言文本中,规定排版文字书写方向为右至左
ASCII
- https://www.ascii-code.com
- https://en.wikipedia.org/wiki/ASCII
- https://en.wikipedia.org/wiki/Extended_ASCII
- ASCII码一览表,ASCII码对照表
- https://cloud.magiclen.org/cn/ascii
- ASCII码对照表【2022年汇总】
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统
,是一种字符代码(UTF-8的子集),为使计算机支持更多语言,通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。
超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码
ASCII字符集由95个可打印字符(0x20-0x7E)(可见字符)和33个控制字符(0x00-0x1F,0x7F)(不可见字符)组成
Windows下ASCII(ANSI) Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?
- ASCII基本字符为:
0
~127
,共128个- ASCII控制字符为:
0
~31
,共32个 - ASCII可显示字符为:
32
~127
,共96个- 数字09对应的ASCII码(十进制)为:`48`
57
- 大写字母AZ对应的ASCII码(十进制)为:`65`
90
- 小写字母az对应的百ASCII码(十进制)为:`97`
122
- 其他为各种符号:
33
`47`和`58`64
和91
`96`和`123`127`
- 数字09对应的ASCII码(十进制)为:`48`
- ASCII控制字符为:
- ASCII扩展字符为:
128
~255
,共128个
Cron表达式
- 特殊符
*
每一(每一分)?
表示不关心,任意-
范围 (小时:1-12,1到12点运行),
标示多个值 (小时 1,2,3 1点2点3点运行)/
递增触发(0/15,从0开始每15秒运行一次)L
最后(日L,当月最后一天,周L周六)W
指定日期最近的工作日(周一到周五)##
序号(表示每月的第几个周几)
- CronTrigger配置格式: [秒] [分] [小时] [日] [月] [周] [年]
序号 | 说明 | 是否必填 | 允许填写的值 | 允许的通配符 |
---|---|---|---|---|
1 | 秒 | 是 | 0-59 | , - * / |
2 | 分 | 是 | 0-59 | , - * / |
3 | 小时 | 是 | 0-23 | , - * / |
4 | 日 | 是 | 1-31 | , - * ? / L W |
5 | 月 | 是 | 1-12 or JAN-DEC | , - * / |
6 | 周 | 是 | 1-7 or SUN-SAT | , - * ? / L ## |
7 | 年 | 是 | empty或1970-2099 | , - * / |
Glob通配符
glob(
man 7 glob
/GLOB(7)
)是shell使用的路径通配符,类似于正则表达式,但是与正则表达式不完全相同