正则表达式03-匹配单个字符

匹配单个字符

在上一小节中,了解到通过re模块能够完成使用正则表达式来匹配字符串

本小节,将要讲解正则表达式的单字符匹配

字符功能
.匹配任意1个字符(除了\n)
[ ]匹配[ ]中列举的字符
\d匹配数字,即0-9
\D匹配非数字,即不是数字
\s匹配空白,即 空格,tab键
\S匹配非空白
\w匹配单词字符,即a-z、A-Z、0-9、_
\W匹配非单词字符

示例1: .

#coding=utf-8

import re

ret = re.match(".","M")
print(ret.group())

ret = re.match("t.o","too")
print(ret.group())

ret = re.match("t.o","two")
print(ret.group())

运行结果:

M
too
two

示例2:[ ]

#coding=utf-8

import re

# 如果hello的首字符小写,那么正则表达式需要小写的h
ret = re.match("h","hello Python") 
print(ret.group())


# 如果hello的首字符大写,那么正则表达式需要大写的H
ret = re.match("H","Hello Python") 
print(ret.group())

# 大小写h都可以的情况
ret = re.match("[hH]","hello Python")
print(ret.group())
ret = re.match("[hH]","Hello Python")
print(ret.group())
ret = re.match("[hH]ello Python","Hello Python")
print(ret.group())

# 匹配0到9第一种写法
ret = re.match("[0123456789]Hello Python","7Hello Python")
print(ret.group())

# 匹配0到9第二种写法
ret = re.match("[0-9]Hello Python","7Hello Python")
print(ret.group())

ret = re.match("[0-35-9]Hello Python","7Hello Python")
print(ret.group())

# 下面这个正则不能够匹配到数字4,因此ret为None
ret = re.match("[0-35-9]Hello Python","4Hello Python")
# print(ret.group())

运行结果:

h
H
h
H
Hello Python
7Hello Python
7Hello Python
7Hello Python

示例3:\d

#coding=utf-8

import re

# 普通的匹配方式
ret = re.match("嫦娥1号","嫦娥1号发射成功") 
print(ret.group())

ret = re.match("嫦娥2号","嫦娥2号发射成功") 
print(ret.group())

ret = re.match("嫦娥3号","嫦娥3号发射成功") 
print(ret.group())

# 使用\d进行匹配
ret = re.match("嫦娥\d号","嫦娥1号发射成功") 
print(ret.group())

ret = re.match("嫦娥\d号","嫦娥2号发射成功") 
print(ret.group())

ret = re.match("嫦娥\d号","嫦娥3号发射成功") 
print(ret.group())

运行结果:

嫦娥1号
嫦娥2号
嫦娥3号
嫦娥1号
嫦娥2号
嫦娥3号

说明

  • 其他的匹配符参见后面章节的讲解
### 正则表达式匹配的使用方法 #### Java 中的正则表达式匹配 在 Java 中,可以通过 `java.util.regex` 包中的类实现正则表达式的功能。主要涉及三个核心类:`Pattern`、`Matcher` 和 `String` 的内置方法。以下是具体用法: 1. **创建 Pattern 对象** 使用 `Pattern.compile()` 方法编译指定的正则表达式模式。 2. **获取 Matcher 对象** 调用 `pattern.matcher(input)` 创建一个用于执行匹配操作的对象。 3. **执行匹配** 可以调用 `matches()` 或其他方法(如 `find()`、`lookingAt()`)来验证输入是否符合给定的正则表达式[^1]。 ```java import java.util.regex.Pattern; import java.util.regex.Matcher; public class RegexExample { public static void main(String[] args) { String regex = "\\d+"; // 匹配一个或多个数字 String input = "There are 123 apples"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("Found number: " + matcher.group()); } } } ``` --- #### Python 中的正则表达式匹配 Python 提供了 `re` 模块支持正则表达式操作。其常见函数包括 `search()`, `match()`, `findall()`, `sub()` 等[^3]。 1. **导入模块并编译正则表达式** 使用 `re.compile(pattern)` 编译正则表达式为可重用对象。 2. **执行匹配** - `re.search(pattern, string)` 查找第一个匹配项。 - `re.match(pattern, string)` 测试字符串开头是否匹配- `re.findall(pattern, string)` 返回所有非重复匹配的结果列表。 示例代码如下: ```python import re # 定义正则表达式和目标字符串 regex = r'\b\w{4}\b' # 匹配长度为4的单词 text = "This is an example text with some words." # 执行查找 result = re.findall(regex, text) print(result) # 输出: ['This', 'with', 'some'] ``` --- #### 基本正则表达式语法 正则表达式的核心在于理解元字符及其组合方式。以下是一些常用的元字符和量词[^4]: | 元字符 | 描述 | |--------|--------------------------| | `\.` | 匹配任意单个字符 | | `*` | 零次或多次 | | `+` | 至少一次 | | `{n}` | 准确 n 次 | | `[abc]`| 字符集合 a, b, c 中任一 | 例如,在 Python 中可以利用这些规则构建复杂模式: ```python import re # 匹配以 . 开头后面跟两个字母的字符串 pattern = r'^.\w{2}$' test_string = ".ab" if re.match(pattern, test_string): print(f"'{test_string}' matches the pattern.") else: print(f"'{test_string}' does not match the pattern.") ``` --- #### 性能优化建议 对于复杂的正则表达式,应考虑性能问题。避免过度嵌套括号或过多回溯可能导致效率低下。推荐预先测试正则表达式的行为,并尝试简化逻辑结构[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值