Skip to content

Commit 1b159b2

Browse files
authored
Merge pull request #60 from hantmac/master
bug fix and add No.94
2 parents 5fe71b0 + 1a55289 commit 1b159b2

File tree

1 file changed

+62
-1
lines changed

1 file changed

+62
-1
lines changed

README.md

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
- [系统编程](#系统编程)
121121
- [106.进程总结](#106进程总结)
122122
- [107.谈谈你对多进程,多线程,以及协程的理解,项目是否用?](#107谈谈你对多进程多线程以及协程的理解项目是否用)
123-
- [108.Python异常使用场景有那些](#108python异常使用场景有那些)
123+
- [108.Python异步使用场景有那些](#108python异步使用场景有那些)
124124
- [109.多线程共同操作同一个数据互斥锁同步?](#109多线程共同操作同一个数据互斥锁同步)
125125
- [110.什么是多线程竞争?](#110什么是多线程竞争)
126126
- [111.请介绍一下Python的线程同步?](#111请介绍一下python的线程同步)
@@ -1546,7 +1546,18 @@ class MyCls(object):
15461546

15471547
## 正则表达式
15481548
### 94.请写出一段代码用正则匹配出ip?
1549+
```python
1550+
def ip_match(ip_str):
1551+
partterns = re.compile(r"(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})(\.(2(5[0-5]{1}|[0-4]\d{1})|[0-1]?\d{1,2})){3}")
1552+
print(partterns.search(ip_str).group(0))
1553+
```
15491554
### 95.a = “abbbccc”,用正则匹配为abccc,不管有多少b,就出现一次?
1555+
```python
1556+
def remove_b(test_str):
1557+
res = re.compile('(?<=a).*?(?=c)')
1558+
ret = res.sub("b",test_str)
1559+
print(ret)
1560+
```
15501561
### 96.Python字符串查找和替换?
15511562
### 97.用Python匹配HTML g tag的时候,<.> 和 <.*?> 有什么区别
15521563
### 98.正则表达式贪婪与非贪婪模式的区别?
@@ -1558,6 +1569,56 @@ class MyCls(object):
15581569
### 104.请写出匹配ip的Python正则表达式
15591570
### 105.Python里match与search的区别?
15601571

1572+
match 方法用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。它的一般使用形式如下:
1573+
1574+
```python
1575+
match(string[, pos[, endpos]])
1576+
其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0len (字符串长度)。因此,**当你不指定 pos 和 endpos 时,match 方法默认匹配字符串的头部**
1577+
当匹配成功时,返回一个 Match 对象,如果没有匹配上,则返回 None
1578+
>>> import re
1579+
>>> pattern = re.compile(r'\d+') # 用于匹配至少一个数字
1580+
>>> m = pattern.match('one12twothree34four') # 查找头部,没有匹配
1581+
>>> print m
1582+
None
1583+
>>> m = pattern.match('one12twothree34four', 2, 10) # 从'e'的位置开始匹配,没有匹配
1584+
>>> print m
1585+
None
1586+
>>> m = pattern.match('one12twothree34four', 3, 10) # 从'1'的位置开始匹配,正好匹配
1587+
>>> print m # 返回一个 Match 对象
1588+
<_sre.SRE_Match object at 0x10a42aac0>
1589+
>>> m.group(0) # 可省略 0
1590+
'12'
1591+
>>> m.start(0) # 可省略 0
1592+
3
1593+
>>> m.end(0) # 可省略 0
1594+
5
1595+
>>> m.span(0) # 可省略 0
1596+
(3, 5)
1597+
```
1598+
## search 方法
1599+
1600+
search 方法用于查找字符串的任何位置,它也是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果,它的一般使用形式如下:
1601+
search(string[, pos[, endpos]])
1602+
其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。
1603+
1604+
当匹配成功时,返回一个 Match 对象,如果没有匹配上,则返回 None。
1605+
```python
1606+
>>> import re
1607+
>>> pattern = re.compile('\d+')
1608+
>>> m = pattern.search('one12twothree34four') # 这里如果使用 match 方法则不匹配
1609+
>>> m
1610+
<_sre.SRE_Match object at 0x10cc03ac0>
1611+
>>> m.group()
1612+
'12'
1613+
>>> m = pattern.search('one12twothree34four', 10, 30) # 指定字符串区间
1614+
>>> m
1615+
<_sre.SRE_Match object at 0x10cc03b28>
1616+
>>> m.group()
1617+
'34'
1618+
>>> m.span()
1619+
(13, 15)
1620+
```
1621+
15611622
## 系统编程
15621623
### 106.进程总结
15631624
进程:程序运行在操作系统上的一个实例,就称之为进程。进程需要相应的系统资源:内存、时间片、pid。

0 commit comments

Comments
 (0)