正则表达式详解与举例

当我们使用正则表达式时,常常需要匹配字母和数字。在正则表达式中,我们可以使用以下表达式进行匹配:

1. \d:匹配任意一个数字字符。例如,正则表达式 \d 匹配字符串 "1"、"2"、"3" 等。

```python
import re

pattern = r"\d"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['1', '2', '3', '4', '5', '6']

2. \w:匹配任意一个字母或数字字符。例如,正则表达式 \w 匹配字符串 "a"、"b"、"1"、"2" 等。

```python
import re

pattern = r"\w"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['1', '2', '3', 'a', 'b', 'c', '4', '5', '6']

3. \s:匹配任意一个空白字符(包括空格、制表符等)。例如,正则表达式 \s 匹配字符串 " "(一个空格字符)。

```python
import re

pattern = r"\s"
string = "Hello World"
result = re.findall(pattern, string)
print(result)
```

输出结果为:[' ']

接下来,我们来解释一下正则表达式中的重复数量:

1. *:匹配前面的表达式0次或多次。例如,正则表达式 \d* 匹配字符串 "123"、"456"、""(空字符串)等。

```python
import re

pattern = r"\d*"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['123', '', '456', '']

2. +:匹配前面的表达式1次或多次。例如,正则表达式 \d+ 匹配字符串 "123"、"456",但不匹配空字符串。

```python
import re

pattern = r"\d+"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['123', '456']

3. ?:匹配前面的表达式0次或1次。例如,正则表达式 \d? 匹配字符串 "1"、""(空字符串),但不匹配 "123"。

```python
import re

pattern = r"\d?"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['1', '', '2', '3', '', '', '4', '5', '6', '']

4. {n}:匹配前面的表达式恰好n次。例如,正则表达式 \d{2} 匹配字符串 "12"、"34",但不匹配 "1"、"123"。

```python
import re

pattern = r"\d{2}"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['12', '34', '56']

5. {n,}:匹配前面的表达式至少n次。例如,正则表达式 \d{2,} 匹配字符串 "12"、"123"、"1234",但不匹配 "1"。

```python
import re

pattern = r"\d{2,}"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['12', '123', '456']

6. {n,m}:匹配前面的表达式至少n次、最多m次。例如,正则表达式 \d{2,4} 匹配字符串 "12"、"123"、"1234",但不匹配 "1"、"12345"。

```python
import re

pattern = r"\d{2,4}"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['12', '123', '456']

接下来,我们来解释一下正则表达式中的字符类:

1. [ ]:匹配方括号内的任意一个字符。例如,正则表达式 [abc] 匹配字符串 "a"、"b"、"c"。

```python
import re

pattern = r"[abc]"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['a', 'b', 'c']

2. [^ ]:匹配除方括号内的字符之外的任意一个字符。例如,正则表达式 [^abc] 匹配字符串 "1"、"2"、"3"、"4"、"5"、"6"。

```python
import re

pattern = r"[^abc]"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['1', '2', '3', '4', '5', '6']

接下来,我们来解释一下正则表达式中的边界:

1. ^:匹配字符串的开头。例如,正则表达式 ^\d 匹配以数字开头的字符串。

```python
import re

pattern = r"^\d"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['1']

2. $:匹配字符串的结尾。例如,正则表达式 \d$ 匹配以数字结尾的字符串。

```python
import re

pattern = r"\d$"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['6']

3. \b:匹配一个单词边界。例如,正则表达式 \babc\b 匹配字符串 "abc",但不匹配 "abcd"、"aabc"。

```python
import re

pattern = r"\babc\b"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:['abc']

最后,我们来解释一下正则表达式中的分组和捕获:

( ):用于分组和捕获匹配的内容。例如,正则表达式 (\d+)(\w+) 匹配字符串 "123abc456",并将数字和字母分别捕获到两个分组中。

```python
import re

pattern = r"(\d+)(\w+)"
string = "123abc456"
result = re.findall(pattern, string)
print(result)
```

输出结果为:[('123', 'abc'), ('456', '')]

希望以上解释和示例能帮助你更好地理解常用的正则表达式公式。

当然!以下是更多常用的正则表达式公式解释和示例:

1. 匹配任意字符(除换行符外):使用`.`来匹配除换行符外的任意一个字符。

   示例:`/a.b/` 可以匹配 "aab"、"acb"、"a1b" 等。

2. 匹配多个字符:使用`+`来匹配前面的字符出现一次或多次。

   示例:`/a+b/` 可以匹配 "ab"、"aab"、"aaab" 等。

3. 匹配可选字符:使用`?`来匹配前面的字符出现零次或一次。

   示例:`/colou?r/` 可以匹配 "color" 或 "colour"。

4. 匹配重复数量:使用`{n}`来匹配前面的字符出现恰好 n 次。

   示例:`/a{3}/` 可以匹配 "aaa"。

5. 匹配连续重复数量:使用`{n,}`来匹配前面的字符出现至少 n 次。

   示例:`/a{2,}/` 可以匹配 "aa"、"aaa"、"aaaa" 等。

6. 匹配指定范围的重复数量:使用`{n,m}`来匹配前面的字符出现 n 到 m 次。

   示例:`/a{2,4}/` 可以匹配 "aa"、"aaa"、"aaaa"。

7. 匹配字符类:使用`[ ]`来匹配字符类中的任意一个字符。

   示例:`/[aeiou]/` 可以匹配任何一个元音字母。

8. 匹配字符类的补集:使用`[^ ]`来匹配不在字符类中的任意一个字符。

   示例:`/[^0-9]/` 可以匹配任何一个非数字字符。

9. 匹配边界:使用`^`来匹配字符串的开头,使用`$`来匹配字符串的结尾。

   示例:`/^hello/` 可以匹配以 "hello" 开头的字符串。

10. 分组和捕获:使用`()`来将多个字符分组,并使用`()`中的内容进行捕获。

    示例:`/(abc)+/` 可以匹配 "abc"、"abcabc"、"abcabcabc" 等。

这些是一些常用的正则表达式公式,希望对你有帮助!如果你还有其他问题,请随时提问。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值