120
120
- [ 系统编程] ( #系统编程 )
121
121
- [ 106.进程总结] ( #106进程总结 )
122
122
- [ 107.谈谈你对多进程,多线程,以及协程的理解,项目是否用?] ( #107谈谈你对多进程多线程以及协程的理解项目是否用 )
123
- - [ 108.Python异常使用场景有那些 ?] ( #108python异常使用场景有那些 )
123
+ - [ 108.Python异步使用场景有那些 ?] ( #108python异步使用场景有那些 )
124
124
- [ 109.多线程共同操作同一个数据互斥锁同步?] ( #109多线程共同操作同一个数据互斥锁同步 )
125
125
- [ 110.什么是多线程竞争?] ( #110什么是多线程竞争 )
126
126
- [ 111.请介绍一下Python的线程同步?] ( #111请介绍一下python的线程同步 )
@@ -1546,7 +1546,18 @@ class MyCls(object):
1546
1546
1547
1547
## 正则表达式
1548
1548
### 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
+ ```
1549
1554
### 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
+ ```
1550
1561
### 96.Python字符串查找和替换?
1551
1562
### 97.用Python匹配HTML g tag的时候,<.> 和 <.* ?> 有什么区别
1552
1563
### 98.正则表达式贪婪与非贪婪模式的区别?
@@ -1558,6 +1569,56 @@ class MyCls(object):
1558
1569
### 104.请写出匹配ip的Python正则表达式
1559
1570
### 105.Python里match与search的区别?
1560
1571
1572
+ match 方法用于查找字符串的头部(也可以指定起始位置),它是一次匹配,只要找到了一个匹配的结果就返回,而不是查找所有匹配的结果。它的一般使用形式如下:
1573
+
1574
+ ``` python
1575
+ match (string[, pos[, endpos]])
1576
+ 其中,string 是待匹配的字符串,pos 和 endpos 是可选参数,指定字符串的起始和终点位置,默认值分别是 0 和 len (字符串长度)。因此,** 当你不指定 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 0x 10a42aac0>
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 0x 10cc03ac0>
1611
+ >> > m.group()
1612
+ ' 12'
1613
+ >> > m = pattern.search(' one12twothree34four' , 10 , 30 ) # 指定字符串区间
1614
+ >> > m
1615
+ < _sre.SRE_Match object at 0x 10cc03b28>
1616
+ >> > m.group()
1617
+ ' 34'
1618
+ >> > m.span()
1619
+ (13 , 15 )
1620
+ ```
1621
+
1561
1622
## 系统编程
1562
1623
### 106.进程总结
1563
1624
进程:程序运行在操作系统上的一个实例,就称之为进程。进程需要相应的系统资源:内存、时间片、pid。
0 commit comments