# Python 正则表达式
> 原文: [https://www.programiz.com/python-programming/regex](https://www.programiz.com/python-programming/regex)
#### 在本教程中,您将学习正则表达式(RegEx),并使用 Python 的`re`模块与 RegEx 一起使用(在示例的帮助下)。
正则表达式(RegEx)是定义搜索模式的字符序列。 例如,
```py
^a...s$
```
上面的代码定义了 RegEx 模式。 模式为从`a`到`s`的任何五个字母的字符串。
使用 RegEx 定义的模式可用于与字符串匹配。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `^a...s$` | `abs` | 没有匹配 |
| | `alias` | 匹配 |
| | `abyss` | 匹配 |
| | `Alias` | 没有匹配 |
| | `An abacus` | 没有匹配 |
* * *
Python 有一个名为`re`的模块可与 RegEx 一起使用。 这是一个例子:
```py
import re
pattern = '^a...s$'
test_string = 'abyss'
result = re.match(pattern, test_string)
if result:
print("Search successful.")
else:
print("Search unsuccessful.")
```
在这里,我们使用`re.match()`函数在`test_string`中搜索`pattern`。 如果搜索成功,该方法将返回一个匹配对象。 如果不是,则返回`None`。
* * *
`re`模块中定义了其他一些函数,可与 RegEx 一起使用。 在探讨之前,让我们学习正则表达式本身。
如果您已经了解 RegEx 的基础知识,请跳至 [Python RegEx](#python-regex)。
* * *
## 使用 RegEx 指定模式
为了指定正则表达式,使用了元字符。 在上面的示例中,`^`和`$`是元字符。
* * *
### 元字符
元字符是 RegEx 引擎以特殊方式解释的字符。 以下是元字符列表:
```py
[] . ^ $ + ? {} () \ |
```
* * *
`[]` - **方括号**
方括号指定您要匹配的一组字符。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `[abc]` | `a` | 1 个匹配 |
| | `ac` | 2 个匹配 |
| | `Hey Jude` | 没有匹配 |
| | `abc de ca` | 5 个匹配 |
在这里,如果您要匹配的字符串包含`a`,`b`或`c`中的任何一个,则`[abc]`将匹配。
您也可以使用方括号内的`-`指定字符范围。
* `[a-e]`与`[abcde]`相同。
* `[1-4]`与`[1234]`相同。
* `[0-39]`与`[01239]`相同。
您可以在方括号的开头使用尖号`^`符号来补充(反转)字符集。
* `[^abc]`表示除`a`或`b`或`c`之外的任何字符。
* `[^0-9]`表示任何非数字字符。
* * *
`.` - **句号**
句点匹配任何单个字符(换行符`'\n'`除外)。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `..` | `a` | 没有匹配 |
| | `ac` | 1 个匹配 |
| | `acd` | 1 个匹配 |
| | `acde` | 2 个匹配(包含 4 个字符) |
* * *
`^` - **脱字符**
插入符号`^`用于检查字符串**是否以某个字符开头**。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `^a` | `a` | 1 个匹配 |
| `abc` | 1 个匹配 |
| `bac` | 没有匹配 |
| `^ab` | `abc` | 1 个匹配 |
| `acb` | 没有匹配(以`a`开头,但之后没有`b`) |
* * *
`$` - **美元**
美元符号`$`用于检查字符串**是否以某个字符结束**。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `a$` | `a` | 1 个匹配 |
| `formula` | 1 个匹配 |
| `cab` | 没有匹配 |
* * *
`*` - **星号**
星形符号`*`匹配**模式的零次或多次出现**。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `ma*n` | `mn` | 1 个匹配 |
| `man` | 1 个匹配 |
| `maaan` | 1 个匹配 |
| `main` | 没有匹配(`a`之后没有`n`) |
| `woman` | 1 个匹配 |
* * *
`+`- **加号**
加号`+`**匹配左侧的模式的一个或多个出现**。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `ma+n` | `mn` | 没有匹配(没有`a`字符) |
| `man` | 1 个匹配 |
| `maaan` | 1 个匹配 |
| `main` | 没有匹配(`a`后跟`n`) |
| `woman` | 1 个匹配 |
* * *
`?` - **问号**
问号符号`?`匹配**模式的零或一次出现**。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `ma?n` | `mn` | 1 个匹配 |
| `man` | 1 个匹配 |
| `maaan` | 没有匹配(一个以上`a`字符) |
| `main` | 没有匹配(`a`之后没有`n`) |
| `woman` | 1 个匹配 |
* * *
`{}` - **大括号**
考虑以下代码:`{n,m}`。 这意味着至少`n`,并且最多`m`个重复的模式留给它。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `a{2,3}` | `abc dat` | 没有匹配 |
| `abc daat` | 1 个匹配(在`d<u>aa</u>t`) |
| `aabc daaat` | 2 个匹配(在`<u>aa</u>bc`和`d<u>aaa</u>t`) |
| `aabc daaaat` | 2 个匹配(在`<u>aa</u>bc`和`d<u>aaa</u>at`) |
让我们再尝试一个示例。 此 RegEx `[0-9]{2, 4}`匹配至少 2 位但不超过 4 位
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `[0-9]{2,4}` | `ab123csde` | 1 个匹配(在`ab<u>123</u>csde`) |
| `12 and 345673` | 3 个匹配(`<u>12</u>`,`<u>3456</u>`,`<u>73</u>`) |
| `1 and 2` | 没有匹配 |
* * *
`|` - **替代项**
竖线`|`用于交替(`or`运算符)。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `a|b` | `cde` | 没有匹配 |
| `ade` | 1 个匹配(在`<u>a</u>de`匹配) |
| `acdbea` | 3 个匹配(在`<u>a</u>cd<u>b</u>e<u>a</u>`) |
在此,`a|b`匹配包含`a`或`b`的任何字符串
* * *
`()` - **分组**
括号`()`用于对子模式进行分组。 例如,`(a|b|c)xz`匹配与`a`或`b`或`c`匹配的任何字符串,后跟`xz`
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `(a|b|c)xz` | `ab xz` | 没有匹配 |
| `abxz` | 1 个匹配(在`a<u>bxz</u>`匹配) |
| `axz cabxz` | 2 个匹配(在`<u>axz</u>bc ca<u>bxz</u>`) |
* * *
`\` - **反斜线**
反冲`\`用于转义包括所有元字符在内的各种字符。 例如,
如果字符串包含`$`后跟`a`,则`\$a`匹配。 在这里,`$`不是由 RegEx 引擎以特殊方式解释的。
如果不确定某个字符是否具有特殊含义,可以在其前面放置`\`。 这样可以确保不对字符进行特殊处理。
* * *
**特殊序列**
特殊序列使常用模式更易于编写。 以下是特殊序列的列表:
`\A` - 如果指定字符在字符串的开头,则匹配。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\Athe` | `the sun` | 匹配 |
| `In the sun` | 没有匹配 |
* * *
`\b` - 如果指定字符在单词的开头或结尾,则匹配。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\bfoo` | `football` | 匹配 |
| `a football` | 匹配 |
| `afootball` | 没有匹配 |
| `foo\b` | `the foo` | 匹配 |
| `the afoo test` | 匹配 |
| `the afootest` | 没有匹配 |
* * *
`\B` - 与`\b`相反。 如果指定字符不是单词开头或结尾,则匹配。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\Bfoo` | `football` | 没有匹配 |
| `a football` | 没有匹配 |
| `afootball` | 匹配 |
| `foo\B` | `the foo` | 没有匹配 |
| `the afoo test` | 没有匹配 |
| `the afootest` | 匹配 |
* * *
`\d` - 匹配任何十进制数字。 相当于`[0-9]`
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\d` | `12abc3` | 3 个匹配(在`<u>12</u>abc<u>3</u>`) |
| `Python` | 没有匹配 |
* * *
`\D` - 匹配任何非十进制数字。 相当于`[^0-9]`
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\D` | `1ab34"50` | 3 个匹配(在`1<u>ab</u>34<u>"</u>50`) |
| `1345` | 没有匹配 |
* * *
`\s` - 匹配字符串包含任何空格字符的地方。 等效于`[ \t\n\r\f\v]`。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\s` | `Python RegEx` | 1 个匹配 |
| `PythonRegEx` | 没有匹配 |
* * *
`\S` - 匹配字符串包含任何非空白字符的地方。 等效于`[^ \t\n\r\f\v]`。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\S` | `a b` | 2 个匹配(在`<u>a</u> <u>b</u>`) |
| | 没有匹配 |
* * *
`\w` - 匹配任何字母数字字符(数字和字母)。 等效于`[a-zA-Z0-9_]`。 顺便说一下,下划线`_`也被认为是字母数字字符。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\w` | `12&": ;c` | 3 个匹配(在`<u>12</u>&": ;<u>c</u>`) |
| `%"> !` | 没有匹配 |
* * *
`\W` - 匹配任何非字母数字字符。 相当于`[^a-zA-Z0-9_]`
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `\W` | `1a2%c` | 1 个匹配(在`1<u>a</u>2<u>%</u>c`) |
| `Python` | 没有匹配 |
* * *
`\Z` - 如果指定字符在字符串的末尾,则匹配。
| 表达式 | 字符串 | 是否匹配 |
| --- | --- | --- |
| `Python\Z` | `I like Python` | 1 个匹配 |
| `I like Python Programming` | 没有匹配 |
| `Python is fun.` | 没有匹配 |
* * *
**提示**:要构建和测试正则表达式,可以使用 RegEx 测试器工具,例如 [regex101](https://regex101.com/ "RegEx tester") 。 该工具不仅可以帮助您创建正则表达式,还可以帮助您学习它。
现在,您了解了 RegEx 的基础知识,让我们讨论如何在 Python 代码中使用 RegEx。
* * *
## Python RegEx
Python 有一个名为`re`的模块可用于正则表达式。 要使用它,我们需要导入模块。
```py
import re
```
该模块定义了一些可与 RegEx 一起使用的函数和常量。
* * *
## `re.findall()`
`re.findall()`方法返回包含所有匹配项的字符串列表。
* * *
### 示例 1:`re.findall()`
```py
# Program to extract numbers from a string
import re
string = 'hello 12 hi 89\. Howdy 34'
pattern = '\d+'
result = re.findall(pattern, string)
print(result)
# Output: ['12', '89', '34']
```
如果找不到该模式,则`re.findall()`返回一个空列表。
* * *
## `re.split()`
`re.split`方法在存在匹配项的地方拆分字符串,并返回发生拆分的字符串列表。
* * *
### 示例 2:`re.split()`
```py
import re
string = 'Twelve:12 Eighty nine:89.'
pattern = '\d+'
result = re.split(pattern, string)
print(result)
# Output: ['Twelve:', ' Eighty nine:', '.']
```
如果找不到该模式,则`re.split()`返回一个包含原始字符串的列表。
* * *
您可以将`maxsplit`参数传递给`re.split()`方法。 这是将要发生的最大拆分次数。
```py
import re
string = 'Twelve:12 Eighty nine:89 Nine:9.'
pattern = '\d+'
# maxsplit = 1
# split only at the first occurrence
result = re.split(pattern, string, 1)
print(result)
# Output: ['Twelve:', ' Eighty nine:89 Nine:9.']
```
顺便说一下,`maxsplit`的默认值为 0; 意味着所有可能的分裂。
* * *
## `re.sub()`
`re.sub()`的语法为:
```py
re.sub(pattern, replace, string)
```
该方法返回一个字符串,其中匹配的匹配项被`replace`变量的内容替换。
* * *
### 示例 3:`re.sub()`
```py
# Program to remove all whitespaces
import re
# multiline string
string = 'abc 12\
de 23 \n f45 6'
# matches all whitespace characters
pattern = '\s+'
# empty string
replace = ''
new_string = re.sub(pattern, replace, string)
print(new_string)
# Output: abc12de23f456
```
如果找不到该模式,则`re.sub()`返回原始字符串。
* * *
您可以将`count`作为第四个参数传递给`re.sub()`方法。 如果省略,则结果为 0。这将替换所有出现的事件。
```py
import re
# multiline string
string = 'abc 12\
de 23 \n f45 6'
# matches all whitespace characters
pattern = '\s+'
replace = ''
new_string = re.sub(r'\s+', replace, string, 1)
print(new_string)
# Output:
# abc12de 23
# f45 6
```
* * *
## `re.subn()`
`re.subn()`与`re.sub()`相似,但期望它返回 2 个项目的元组,其中包含新字符串和进行的替换数目。
* * *
### 示例 4:`re.subn()`
```py
# Program to remove all whitespaces
import re
# multiline string
string = 'abc 12\
de 23 \n f45 6'
# matches all whitespace characters
pattern = '\s+'
# empty string
replace = ''
new_string = re.subn(pattern, replace, string)
print(new_string)
# Output: ('abc12de23f456', 4)
```
* * *
## `re.search()`
`re.search()`方法采用两个参数:模式和字符串。 该方法查找 RegEx 模式与字符串匹配的第一个位置。
如果搜索成功,则`re.search()`返回一个匹配对象。 如果不是,则返回`None`。
```py
match = re.search(pattern, str)
```
* * *
### 示例 5:`re.search()`
```py
import re
string = "Python is fun"
# check if 'Python' is at the beginning
match = re.search('\APython', string)
if match:
print("pattern found inside the string")
else:
print("pattern not found")
# Output: pattern found inside the string
```
在此,`match`包含一个匹配对象。
* * *
## 匹配对象
您可以使用[`dir()`](/python-programming/methods/built-in/dir)函数获取匹配对象的方法和属性。
匹配对象的一些常用方法和属性是:
* * *
### `match.group()`
`group()`方法返回字符串中匹配的部分。
### 示例 6:匹配对象
```py
import re
string = '39801 356, 2102 1111'
# Three digit number followed by space followed by two digit number
pattern = '(\d{3}) (\d{2})'
# match variable contains a Match object.
match = re.search(pattern, string)
if match:
print(match.group())
else:
print("pattern not found")
# Output: 801 35
```
在此,`match`变量包含一个匹配对象。
我们的模式`(\d{3}) (\d{2})`具有两个子组`(\d{3})`和`(\d{2})`。 您可以获取这些带括号的子组的字符串的一部分。 这是如何做:
```py
>>> match.group(1)
'801'
>>> match.group(2)
'35'
>>> match.group(1, 2)
('801', '35')
>>> match.groups()
('801', '35')
```
* * *
### `match.start()`,`match.end()`和`match.span()`
`start()`函数返回匹配的子字符串的开头的索引。 同样,`end()`返回匹配的子字符串的结束索引。
```py
>>> match.start()
2
>>> match.end()
8
```
`span()`函数返回一个包含匹配部分的开始和结束索引的元组。
```py
>>> match.span()
(2, 8)
```
* * *
### `match.re`和`match.string`
匹配对象的`re`属性返回正则表达式对象。 同样,`string`属性返回传递的字符串。
```py
>>> match.re
re.compile('(\\d{3}) (\\d{2})')
>>> match.string
'39801 356, 2102 1111'
```
* * *
我们已经介绍了`re`模块中定义的所有常用方法。 如果您想了解更多信息,请访问 [Python 3 `re`模块](https://docs.python.org/3/library/re.html)。
* * *
### 在 RegEx 之前使用`r`前缀
在正则表达式前使用`r`或`R`前缀时,表示原始字符串。 例如,`'\n'`是换行,而`r'\n'`表示两个字符:反斜杠`\`后跟`n`。
反冲`\`用于转义包括所有元字符在内的各种字符。 但是,使用`r`前缀会使`\`被视为正常字符。
* * *
### 示例 7:使用`r`前缀的原始字符串
```py
import re
string = '\n and \r are escape sequences.'
result = re.findall(r'[\n\r]', string)
print(result)
# Output: ['\n', '\r']
```
- Programiz C 语言教程
- C 简介
- C 关键字和标识符
- C 变量,常量和字面值
- C 数据类型
- C 输入输出(I/O)
- C 编程运算符
- C 简单示例
- C 流程控制
- C if...else语句
- C for循环
- C while和do...while循环
- C break和continue
- C switch语句
- C goto声明
- C 控制流程示例
- C 函数
- C 函数
- C 用户定义的函数
- C 编程中用户定义函数的类型
- C 递归
- C 存储类
- C 函数示例
- C 数组
- C 数组
- C 多维数组
- 将数组传递给 C 中的函数
- C 编程指针
- C 指针
- 数组和指针之间的关系
- C 按引用调用:使用指针
- C 动态内存分配
- C 数组和指针示例
- C 字符串
- C 编程字符串
- 使用库函数进行 C 编程中的字符串操作
- C 编程中的字符串示例
- 结构与联合
- 结构
- 结构和指针
- C 结构与函数
- C 联合
- C 结构示例
- C 文件
- C 文件处理
- C 文件示例
- 其他主题
- 枚举
- C 预处理器和宏
- C 标准库函数
- C 示例
- C 程序:打印金字塔和图案
- C 程序:检查数字是否为质数
- C 程序:检查数字是否为回文
- C 程序:HelloWorld
- C 程序:打印整数(由用户输入)
- C 程序:相加两个整数
- C 程序:将两个浮点数相乘
- C 程序:查找字符的 ASCII 值
- C 程序:商和余数
- C 程序:查找int,float,double和char的大小
- C 程序:long关键字演示
- C 程序:交换两个数字
- C 程序:检查数字是偶数还是奇数
- C 程序:检查字符是元音还是辅音
- C 程序:查找三个数字中最大的数字
- C 程序:查找二次方程的根
- C 程序:检查闰年
- C 程序:检查数字是正数还是负数
- C 程序:检查字符是否为字母
- C 程序:计算自然数之和
- C 程序:查找数字阶乘
- C 程序:生成乘法表
- C 程序:显示斐波那契数列
- C 程序:查找两个数字的 GCD
- C 程序:查找两个数字的 LCM
- C 程序:使用循环从 A 到 Z 显示字符
- C 程序:计算整数中的位数
- C 程序:反转数字
- C 程序:计算数字的幂
- C 程序:显示两个间隔之间的质数
- C 程序:检查阿姆斯特朗数
- C 程序:在两个间隔之间显示阿姆斯特朗数
- C 程序:显示数字因数
- C 程序:使用switch...case制作一个简单的计算器
- C 程序:使用函数显示区间内的质数
- C 程序:使用用户定义的函数检查质数或阿姆斯特朗数
- C 程序:检查一个数字是否可以表示为两个质数之和
- C 程序:使用递归查找自然数之和
- C 程序:使用递归查找数字的阶乘
- C 程序:使用递归查找 GCD
- C 程序:将二进制数转换为十进制,反之亦然
- C 程序:将八进制数转换为十进制,反之亦然
- C 程序:将二进制数转换为八进制,反之亦然
- C 程序:使用递归来反转句子
- C 程序:使用递归计算幂
- C 程序:使用数组计算平均值
- C 程序:查找数组中的最大元素
- C 程序:计算标准差
- C 程序:使用多维数组相加两个矩阵
- C 程序:使用多维数组将两个矩阵相乘
- C 程序:查找矩阵的转置
- C 程序:通过将矩阵传递给函数来将两个矩阵相乘
- C 程序:使用指针访问数组元素
- C 程序:使用按引用调用以循环顺序交换数字
- C 程序:使用动态内存分配查找最大数字
- C 程序:查找字符串中字符的频率
- C 程序:计算元音,辅音等的数量
- C 程序:删除字符串中除字母之外的所有字符
- C 程序:查找字符串的长度
- C 程序:连接两个字符串
- C 程序:不使用strcpy()复制字符串
- C 程序:按字典顺序(字典顺序)对元素进行排序
- C 程序:使用程序存储学生信息
- C 程序:使用结构相加两个距离(以英寸-英尺系统为单位)
- C 程序:通过将结构传递给函数来相加两个复数
- C 程序:计算两个时间段之间的差异
- C 程序:使用结构存储学生信息
- C 程序:在结构中动态存储数据
- C 程序:将句子写入文件
- C 程序:从文件中读取一行并显示它
- C 程序:显示自己的源代码作为输出
- Programiz C++ 教程
- C++ 简介
- C++ 变量,文字和常量
- C++ 数据类型
- C++ 基本输入/输出
- C++ 类型转换
- C++ 运算符
- C++ 注释
- C++ 流控制
- C++ if,if...else和嵌套if...else
- C++ for循环
- C++ while和do...while循环
- C++ break语句
- C++ switch..case语句
- C++ goto语句
- C++ 函数
- C++ 函数
- C++ 中用户定义函数的类型
- C++ 函数重载
- C++ 编程默认参数(参数)
- C++ 存储类
- C++ 递归
- C++ 通过引用返回
- C++ 数组和字符串
- C++ 数组
- C++ 多维数组
- 在 C++ 编程中将数组传递给函数
- C++ 字符串
- C++ 结构
- C++ 结构
- C++ 结构与功能
- C++ 结构指针
- C++ 枚举
- C++ 对象和类
- C++ 类和对象
- C++ 构造器
- 如何通过 C++ 中的函数传递和返回对象?
- C++ 运算符重载
- C++ 指针
- C++ 指针
- C++ 指针和数组
- 通过引用进行 C++ 调用:使用指针[包含示例]
- C++ 内存管理:new和delete
- C++ 继承
- C++ 继承
- C++ 编程中的公共,受保护和私有继承
- C++ 函数覆盖
- C++ 多重,多层和层次继承
- C++ 友元函数和友元类
- C++ 虚函数
- C++ 模板
- C++ 示例
- C++ 程序:HelloWorld
- C++ 程序:检查数字是否为质数
- C++ 程序:创建金字塔和图案
- C++ 程序:加两个数字
- C++ 程序:打印用户输入的数字
- C++ 程序:查找商数和余数
- C++ 程序:在系统中查找int,float,double和char的大小
- C++ 程序:交换两个数字
- C++ 程序:检查数字是偶数还是奇数
- C++ 程序:检查字符是元音还是辅音
- C++ 程序:查找三个数字中最大的数字
- C++ 程序:查找二次方程式的所有根
- C++ 程序:计算自然数之和
- C++ 程序:检查闰年
- C++ 程序:查找阶乘
- C++ 程序:生成乘法表
- C++ 程序:显示斐波那契数列
- C++ 程序:查找 GCD
- C++ 程序:查找 LCM
- C++ 程序:反转数字
- C++ 程序:计算数字的幂
- C++ 程序:递增++和递减--运算符重载
- C++ 程序:使用运算符重载减去复数
- C++ 程序:查找字符的 ASCII 值
- C++ 程序:将两个数相乘
- C++ 程序:检查数字是否为回文
- C++ 程序:显示两个间隔之间的质数
- C++ 程序:检查阿姆斯特朗数
- C++ 程序:显示两个间隔之间的阿姆斯特朗数
- C++ 程序:显示数字的因数
- C++ 程序:使用switch...case的简单的加减乘除计算器
- C++ 程序:使用函数显示两个时间间隔之间的质数
- C++ 程序:通过创建函数来检查质数
- C++ 程序:检查数字是否可以表示为两个质数之和
- C++ 程序:使用递归查找自然数之和
- C++ 程序:使用递归计算数字的阶乘
- C++ 程序:使用递归查找 GCD
- C++ 程序:将二进制数转换为十进制,反之亦然
- C++ 程序:将八进制数转换为十进制,反之亦然
- C++ 程序:将二进制数转换为八进制,反之亦然
- C++ 程序:使用递归来反转句子
- C++ 程序:使用递归计算幂
- C++ 程序:使用数组计算数字平均值
- C++ 程序:查找数组的最大元素
- C++ 程序:计算标准差
- C++ 程序:使用多维数组相加两个矩阵
- C++ 程序:使用多维数组将两个矩阵相乘
- C++ 程序:查找矩阵的转置
- C++ 程序:通过将矩阵传递给函数将两个矩阵相乘
- C++ 程序:使用指针访问数组元素
- C++ 程序:使用引用调用以循环顺序交换数字
- C++ 程序:查找字符串中字符的频率
- C++ 程序:查找字符串中元音,辅音,数字和空白的数量
- C++ 程序:删除字符串中除字母之外的所有字符
- C++ 程序:查找字符串的长度
- C++ 程序:连接两个字符串
- C++ 程序:复制字符串
- C++ 程序:按字典顺序(字典顺序)对元素进行排序
- C++ 程序:在结构中存储学生的信息
- C++ 程序:使用结构相加两个距离(以英寸-英尺为单位)
- C++ 程序:通过将结构传递给函数来添加复数
- C++ 程序:计算两个时间段之间的差异
- C++ 程序:使用结构存储和显示信息
- Programiz C# 教程
- 简介
- C# Hello World - 您的第一个 C# 程序
- C# 关键字和标识符
- C# 变量和(原始)数据类型
- C# 运算符
- C# 基本输入和输出
- C# 表达式,语句和块(带有示例)
- C# 注释
- 流程控制
- C# if,if...else,if...else if和嵌套if语句
- C# for循环
- C# while和do...while循环
- C# foreach循环
- C# switch语句
- C# 三元(?:)运算符
- 其他话题
- C# 按位和移位运算符
- C# 预处理程序指令
- C# 编程中的命名空间
- C# 部分类和部分方法
- Programiz 数据结构和算法教程
- DSA 简介
- 什么是算法?
- 为什么要学习数据结构和算法?
- 渐近分析
- 主定理
- 分治算法
- 数据结构(一)
- 栈
- 队列
- 队列类型
- 循环队列
- 优先队列
- 双端队列
- 数据结构(二)
- 链表
- 链表操作:遍历,插入和删除
- 链表的类型 - 单链,双链和循环链
- 哈希表
- 堆数据结构
- 斐波那契堆
- 减小斐波那契堆上的键和删除节点的操作
- 基于树的 DSA(I)
- 树数据结构
- 树遍历 - 中序,前序和后序
- 满二叉树
- 满二叉树
- 完美二叉树
- 完全二叉树
- 平衡二叉树
- 二叉搜索树(BST)
- AVL 树
- 基于树的 DSA(II)
- B 树
- 插入 B 树
- 从 B 树删除
- B+ 树
- 在 B+ 树上插入
- 从 B+ 树中删除
- 红黑树
- 插入红黑树
- 从红黑树中删除
- 基于图的 DSA
- 图数据结构
- 生成树和最小生成树
- 强连通的组件
- 邻接矩阵
- 邻接表
- DFS 算法
- BFS 算法
- Bellman Ford 算法
- 排序和搜索算法
- 冒泡排序算法
- 选择排序算法
- 插入排序算法
- 归并排序算法
- 快速排序算法
- 计数排序算法
- 基数排序算法
- 桶排序算法
- 堆排序算法
- Shell 排序算法
- 线性搜索
- 二分搜索
- 贪婪算法
- 贪婪算法
- Ford-Fulkerson 算法
- Dijkstra 算法
- Kruskal 算法
- Prim 算法
- 霍夫曼编码
- 动态规划
- 动态规划
- Floyd-Warshall 算法
- 最长公共子序列
- 其他算法
- 回溯算法
- Rabin-Karp 算法
- Programiz Java 教程
- Java 简介
- Java HelloWorld 程序
- Java JDK,JRE 和 JVM
- Java 变量和(原始)数据类型
- Java 运算符
- Java 基本输入和输出
- Java 表达式,语句和块
- Java 注释
- Java 流程控制
- Java if,if...else语句
- Java switch语句
- Java for循环
- Java for-each循环(增强循环)
- Java while和do...while循环
- Java Break语句
- Java continue语句
- Java 数组
- Java 数组
- Java 多维数组
- Java 复制数组
- Java OOP(I)
- Java 类和对象
- Java 方法
- Java 构造器
- Java 字符串
- Java 访问修饰符
- Java this关键字
- Java final关键字
- Java 递归
- Java instanceof
- Java OOP(II)
- Java 继承
- Java 方法覆盖
- Java super
- Java 抽象类和抽象方法
- Java 接口
- Java 多态
- Java 封装
- Java OOP(III)
- Java 嵌套和内部类
- Java 静态嵌套类
- Java 匿名类
- Java 单例
- Java 枚举
- Java 枚举构造器
- Java 枚举字符串
- Java 反射
- Java 异常处理
- Java 异常
- Java 异常处理
- Java throw
- Java 捕获多个异常
- Java try-with-resources
- Java 注解
- Java 注解类型
- Java 日志
- Java 断言
- Java 列表
- Java 集合框架
- Java Collection接口
- Java List接口
- Java ArrayList类
- Java Vector
- Java Stack类
- Java 队列
- Java Queue接口
- Java PriorityQueue
- Java Deque接口
- Java LinkedList
- Java ArrayDeque
- Java BlockingQueue
- Java ArrayBlockingQueue
- Java LinkedBlockingQueue
- Java 映射
- Java Map接口
- Java HashMap
- Java LinkedHashMap
- Java WeakHashMap
- Java EnumMap
- Java SortedMap接口
- Java NavigableMap接口
- Java TreeMap
- Java ConcurrentMap接口
- Java ConcurrentHashMap
- Java 集
- Java Set接口
- Java HashSet类
- Java EnumSet
- Java LinkedHashSet
- Java SortedSet接口
- Java NavigableSet接口
- Java TreeSet
- Java 算法
- Java Iterator接口
- Java ListIterator接口
- Java I/O 流
- Java I/O 流
- Java InputStream类
- Java OutputStream类
- Java FileInputStream类
- Java FileOutputStream类
- Java ByteArrayInputStream类
- Java ByteArrayOutputStream类
- Java ObjectInputStream类
- Java ObjectOutputStream类
- Java BufferedInputStream类
- Java BufferedOutputStream类
- Java PrintStream类
- Java 读取器/写入器
- Java Reader类
- Java Writer类
- Java InputStreamReader类
- Java OutputStreamWriter类
- Java FileReader类
- Java FileWriter类
- Java BufferedReader类
- Java BufferedWriter类
- Java StringReader类
- Java StringWriter类
- Java PrintWriter类
- 其他主题
- Java Scanner类
- Java 类型转换
- Java 自动装箱和拆箱
- Java Lambda 表达式
- Java 泛型
- Java File类
- Java 包装器类
- Java 命令行参数
- Java 实例
- Java 程序:检查数字是否为质数
- Java 程序:显示斐波那契数列
- Java 程序:创建金字塔和图案
- Java 程序:反转数字
- Java 程序:打印整数(由用户输入)
- Java 程序:相加两个整数
- Java 程序:将两个浮点数相乘
- Java 程序:查找字符的 ASCII 值
- Java 程序:计算商数和余数
- Java 程序:交换两个数字
- Java 程序:检查数字是偶数还是奇数
- Java 程序:检查字母是元音还是辅音
- Java 程序:在三个数字中找到最大值
- Java 程序:查找二次方程式的所有根
- Java 程序:检查闰年
- Java 程序:检查数字是正数还是负数
- Java 程序:检查字符是否为字母
- Java 程序:计算自然数之和
- Java 程序:查找数字的阶乘
- Java 程序:生成乘法表
- Java 程序:显示斐波那契数列
- Java 程序:查找两个数字的 GCD
- Java 程序:查找两个数字的 LCM
- Java 程序:使用循环从 A 到 Z 显示字符
- Java 程序:计算整数的位数
- Java 程序:计算数字的幂
- Java 程序:检查数字是否为回文
- Java 程序:检查数字是否为质数
- Java 程序:显示两个时间间隔之间的质数
- Java 程序:检查阿姆斯特朗数
- Java 程序:显示两个间隔之间的阿姆斯特朗数
- Java 程序:使用函数显示间隔之间的质数
- Java 程序:使用函数显示间隔之间的阿姆斯特朗数
- Java 程序:以显示数字的因数
- Java 程序:使用switch...case创建一个简单的计算器
- Java 程序:检查一个数字是否可以表示为两个质数之和
- Java 程序:使用递归查找自然数之和
- Java 程序:使用递归查找数字的阶乘
- Java 程序:使用递归查找 GCD
- Java 程序:将二进制数转换为十进制,反之亦然
- Java 程序:将八进制数转换为十进制,反之亦然
- Java 程序:将二进制数转换为八进制,反之亦然
- Java 程序:使用递归来反转句子
- Java 程序:使用递归来计算幂
- Java 程序:使用数组计算平均值
- Java 程序:查找数组的最大元素
- Java 程序:计算标准差
- Java 程序:使用多维数组相加两个矩阵
- Java 程序:使用多维数组相乘矩阵
- Java 程序:通过将矩阵传递给函数来将两个矩阵相乘
- Java 程序:查找矩阵转置
- Java 程序:查找字符串中字符的频率
- Java 程序:计算句子中元音和辅音的数量
- Java 程序:按字典顺序对元素进行排序
- Java 程序:通过将对象传递给函数来相加两个复数
- Java 程序:计算两个时间段之间的差异
- Java 程序:从字符串中删除所有空格
- Java 程序:打印数组
- Java 程序:将字符串转换为日期
- Java 程序:将数字四舍五入到 n 个小数位
- Java 程序:连接两个数组
- Java 程序:将字符转换为字符串,反之亦然
- Java 程序:检查数组是否包含给定值
- Java 程序:检查字符串是否为空或null
- Java 程序:获取当前日期/时间
- Java 程序:将毫秒转换为分钟和秒
- Java 程序:相加两个日期
- Java 程序:连接两个列表
- Java 程序:将列表(ArrayList)转换为数组,反之亦然
- Java 程序:获取当前工作目录
- Java 程序:将映射(HashMap)转换为列表
- Java 程序:将数组转换为集(HashSet),反之亦然
- Java 程序:将字节数组转换为十六进制
- Java 程序:从文件内容创建字符串
- Java 程序:将文本附加到现有文件
- Java 程序:将栈跟踪转换为字符串
- Java 程序:将文件转换为字节数组,反之亦然
- Java 程序:将InputStream转换为字符串
- Java 程序:将OutputStream转换为字符串
- Java 程序:按字符串值查找枚举
- Java 程序:比较字符串
- Java 程序:按值对映射进行排序
- Java 程序:按属性对自定义对象的ArrayList进行排序
- Java 程序:检查字符串是否为数字
- Java 程序:创建目录
- Java 程序:重命名文件
- Java 程序:列出目录中的文件
- Java 程序:复制文件
- Programiz Kotlin 教程
- Kotlin 简介
- Kotlin HelloWorld - 您的 Kotlin 程序
- Kotlin 变量和原始类型
- Kotlin 运算符
- Kotlin 类型转换
- Kotlin 表达式,语句和块
- Kotlin 注释
- Kotlin 基本输入/输出
- Kotlin 流程控制
- Kotlin if表达式
- Kotlin when表达式
- Kotlin while和do...while循环
- Kotlin for循环
- Kotlin break表达式
- Kotlin continue表达式
- Kotlin 函数
- Kotlin 函数
- Kotlin 中缀函数调用
- Kotlin 默认和命名参数
- Kotlin 递归(递归函数)和尾递归
- Kotlin OOP
- Kotlin 类和对象
- Kotlin 构造器
- Kotlin 获取器和设置器
- Kotlin 继承
- Kotlin 可见性修饰符
- Kotlin 抽象类
- Kotlin 接口
- Kotlin 嵌套和内部类
- Kotlin 数据类
- Kotlin 密封类
- Kotlin 对象声明和表达式
- Kotlin 伴随对象
- Kotlin 扩展函数
- Kotlin 运算符重载
- Kotlin 示例
- Kotlin 程序:获取当前日期/时间
- Kotlin 程序:将列表(ArrayList)转换为Array,反之亦然
- Kotlin 程序:将字符串转换为日期
- Kotlin 程序:按属性对自定义对象的ArrayList进行排序
- Kotlin 程序:打印整数(由用户输入)
- Kotlin 程序:相加两个整数
- Kotlin 程序:将两个浮点数相乘
- Kotlin 程序:查找字符的 ASCII 值
- Kotlin 程序:计算商数和余数
- Kotlin 程序:交换两个数字
- Kotlin 程序:检查数字是偶数还是奇数
- Kotlin 程序:检查字母是元音还是辅音
- Kotlin 程序:在三个数字中找到最大的一个
- Kotlin 程序:查找二次方程的所有根
- Kotlin 程序:检查闰年
- Kotlin 程序:检查数字是正数还是负数
- Kotlin 程序:检查字符是否为字母
- Kotlin 程序:计算自然数之和
- Kotlin 程序:查找数字的阶乘
- Kotlin 程序:生成乘法表
- Kotlin 程序:展示斐波那契数列
- Kotlin 程序:查找两个数字的 GCD
- Kotlin 程序:查找两个数字的 LCM
- Kotlin 程序:使用循环从 A 到 Z 显示字符
- Kotlin 程序:计算整数位数
- Kotlin 程序:反转数字
- Kotlin 程序:计算数字的幂
- Kotlin 程序:检查数字是否为回文
- Kotlin 程序:检查数字是否为质数
- Kotlin 程序:显示两个间隔之间的质数
- Kotlin 程序:检查阿姆斯特朗数
- Kotlin 程序:显示两个间隔之间的阿姆斯特朗数
- Kotlin 程序:使用函数显示间隔之间的质数
- Kotlin 程序:使用函数显示间隔之间的阿姆斯特朗数
- Kotlin 程序:显示数字因数
- Kotlin 程序:使用switch...case制作一个简单的计算器
- Kotlin 程序:检查一个数字是否可以表示为两个质数之和
- Kotlin 程序:使用递归找到自然数之和
- Kotlin 程序:使用递归查找数字的阶乘
- Kotlin 程序:使用递归查找 GCD
- Kotlin 程序:将二进制数转换为十进制,反之亦然
- Kotlin 程序:将八进制数转换为十进制,反之亦然
- Kotlin 程序:将二进制数转换为八进制,反之亦然
- Kotlin 程序:使用递归来反转句子
- Kotlin 程序:使用递归来计算幂
- Kotlin 程序:使用数组计算平均值
- Kotlin 程序:在数组中查找最大的元素
- Kotlin 程序:计算标准差
- Kotlin 程序:使用多维数组相加两个矩阵
- Kotlin 程序:使用多维数组乘以矩阵
- Kotlin 程序:通过将矩阵传递给函数来将两个矩阵相乘
- Kotlin 程序:查找矩阵的转置
- Kotlin 程序:查找字符串中字符的频率
- Kotlin 程序:计算句子中元音和辅音的数量
- Kotlin 程序:按字典顺序(字典顺序)对元素进行排序
- Kotlin 程序:通过将类传递给函数来相加两个复数
- Kotlin 程序:计算两个时间段之间的差异
- Kotlin 程序:创建金字塔和图案
- Kotlin 程序:从字符串中删除所有空格
- Kotlin 程序:打印数组
- Kotlin 程序:将数字四舍五入到 n 个小数位
- Kotlin 程序:连接两个数组
- Kotlin 程序:将字符转换为字符串并反之
- Kotlin 程序:检查数组是否包含给定值
- Kotlin 程序:检查字符串是否为空或null
- Kotlin 程序:将毫秒转换为分钟
- Kotlin 程序:相加两个日期
- Kotlin 程序:连接两个列表
- Kotlin 程序:获取当前工作目录
- Kotlin 程序:将映射(HashMap)转换为列表
- Kotlin 程序:将数组转换为Set(HashSet),反之亦然
- Kotlin 程序:将字节数组转换为十六进制
- Kotlin 程序:从文件内容创建字符串
- Kotlin 程序:将文本附加到现有文件
- Kotlin 程序:将栈跟踪转换为字符串
- Kotlin 程序:将文件转换为字节数组,反之亦然
- Kotlin 程序:将InputStream转换为字符串
- Kotlin 程序:将OutputStream转换为字符串
- Kotlin 程序:通过字符串值查找枚举
- Kotlin 程序:比较字符串
- Kotlin 程序:按值对映射排序
- Kotlin 程序:检查字符串是否为数字
- Programiz Python 教程
- Python 简介
- 如何开始使用 Python?
- Python 关键字和标识符
- Python 语句,缩进和注释
- Python 变量,常量和字面值
- Python 数据类型
- Python 类型转换
- Python 输入,输出和导入
- Python 运算符
- Python 命名空间和范围
- Python 流程控制
- Python if...else语句
- Python for循环
- Python While循环
- Python break和continue
- Python pass语句
- Python 函数
- Python 函数
- Python 函数参数
- Python 递归
- Python 匿名/ Lambda 函数
- Python 全局,局部和非局部变量
- Python global关键字
- Python 模块
- Python 包
- Python 数据类型
- Python 数字,类型转换和数学
- Python 列表
- Python 元组
- Python 字符串
- Python 集
- Python 字典
- Python 文件
- Python 文件 I/O
- Python 目录和文件管理
- Python 错误和内置异常
- Python 使用try,except和finally语句的异常处理
- Python 自定义异常
- Python 对象和类
- Python 面向对象编程
- Python 对象和类
- Python 继承
- Python 多重继承
- Python 运算符重载
- Python 高级主题
- Python 迭代器
- Python 生成器
- Python 闭包
- Python 装饰器
- Python @property装饰器
- Python 正则表达式
- Python 日期时间
- Python 日期时间
- Python strftime()
- Python strptime()
- 如何在 Python 中获取当前日期和时间?
- Python 获取当前时间
- Python 日期时间到时间戳,反之亦然
- Python time模块
- Python sleep()
- Python 示例
- Python 程序:检查质数
- Python 程序:相加两个数字
- Python 程序:查找数字阶乘
- Python 程序:制作一个简单的计算器
- Python 程序:打印 Helloworld
- Python 程序:查找平方根
- Python 程序:计算三角形的面积
- Python 程序:求解二次方程式
- Python 程序:交换两个变量
- Python 程序:生成随机数
- Python 程序:将公里转换为英里
- Python 程序:将摄氏温度转换为华氏温度
- Python 程序:检查数字是正数,负数还是 0
- Python 程序:检查数字是奇数还是偶数
- Python 程序:检查闰年
- Python 程序:在三个数字中找到最大的
- Python 程序:检查质数
- Python 程序:打印一个间隔内的所有质数
- Python 程序:查找数字阶乘
- Python 程序:显示乘法表
- Python 程序:打印斐波那契序列
- Python 程序:检查阿姆斯特朗数
- Python 程序:查找间隔内的阿姆斯特朗数
- Python 程序:查找自然数总和
- Python 程序:使用匿名函数显示 2 的幂
- Python 程序:查找可被另一个数整除的数字
- Python 程序:将十进制转换为二进制,八进制和十六进制
- Python 程序:查找字符的 ASCII 值
- Python 程序:查找 HCF 或 GCD
- Python 程序:查找 LCM
- Python 程序:查找数字的因数
- Python 程序:制作一个简单的计算器
- Python 程序:打乱纸牌
- Python 程序:显示日历
- Python 程序:使用递归显示斐波那契数列
- Python 程序:使用递归查找自然数之和
- Python 程序:使用递归查找数字的阶乘
- Python 程序:使用递归将十进制转换为二进制
- Python 程序:相加两个矩阵
- Python 程序:转置矩阵
- Python 程序:将两个矩阵相乘
- Python 程序:检查字符串是否为回文
- Python 程序:从字符串中删除标点符号
- Python 程序:按字母顺序对单词进行排序
- Python 程序:演示不同的集合操作
- Python 程序:计算每个元音的数量
- Python 程序:合并邮件
- Python 程序:查找图像的大小(分辨率)
- Python 程序:查找文件哈希
- Programiz Swift 教程
- Swift 介绍
- Swift HelloWorld 程序
- Swift 变量,常量和字面值
- Swift 数据类型
- Swift 可选项
- Swift 的字符和字符串
- Swift 基本输入和输出
- Swift 表达式,语句和代码块
- Swift 注释
- Swift 运算符
- Swift 运算符
- Swift 运算符的优先级和关联性
- Swift 三元条件运算符
- Swift 按位和移位运算符
- Seift 流程控制
- Swift if,if...else语句
- switch语句
- Swift for-in循环
- Swift while和repeat...while循环
- Swift 中的嵌套循环
- break语句
- continue语句
- Guard语句
- Swift 集合
- Swift 数组
- Swift 集
- Swift 字典
- Swift 函数
- Swift 函数
- Swift 函数参数和返回值
- Swift 嵌套函数
- Swift 递归
- Swift 范围
- Swift 函数重载
- Swift 进阶
- Swift 闭包
- Swift 类型别名