-
re.search re.match re.sub
-
_thread.allocate_lock()
-
127.0.0.1 or LAN IP
-
简单来说
re.search
是匹配整个字符串,而不是从头开始,而re.match
是从头开始(当你在正则表达式中没有使用‘$’
的时候),当匹配成功时,都返回match
对象,否则是None
:https://docs.python.org/3/library/re.html?highlight=re#search-vs-match
re.sub是用来替换的,re.sub(pattern, repl, string, count=0, flags=0)
pattern
就是用正则去匹配/描述你要换的那部分,repl
就是replace嘛,那部分你要换成什么东西,repl
可以是一个String,也可以是函数,就是代表目标内容,你也可以用 \1 来引用前面pattern匹配的的第一个分组,(我自己写时都没用到!下图是个很好的例子)string
就是原始内容,count
是最多匹配几次,flag
,我看最多的是flag=re.IGNORCASE 即忽略大小写,忽略谁的大小写,目标内容的大小写。
同时,我们可以看到r
原始字符串用到正则里,比如r'\n'
被正则认为是'\'
和'n'
而不再是换行符,上图中有很好的例子,一天突然想到,正则表达式中字符串中用r原始字符串,这期间到底怎样混合作用?类似的还有shell通配符和正则表达式的混合作用(区别) 原始字符串保证了你写的字符串就是你看到的字符串,它避免了ASCII转义,关键在于这个backslash'\'
,因为正则中也用到这个东西,就很容易发生歧义。
记住,字符串中的\
是转义ASCII字符,而r原始字符串则使它丧失这种能力,正则表达式中也有它的关键字,也使用\
来转义关键字(通常是一个字符),那么如果我要描述一个点’.’(因为点’.'是正则的关键字),pattern=r'\.' 和 pattern='\.'
是没有区别的。 -
python2是
import thread
, python3是import _thread,
看来许多模块都是3比2多个’_’,之前的turtle也是。
来看看 lock=_thread.allocate_lock()
lock.acquire(waitflag=1, timeout=-1)
waitflag非0:等你一万年(可timeout!),是0:不给拉倒。下面文章连接后面还说,线程对中断信号敏感,如果你…
https://docs.python.org/3/library/_thread.html?highlight=_thread#_thread.lock.acquire -
是127.0.0.1呢还是192.168.43.88呢?有一个网络接口就会有一个IP,不管你是虚拟的网卡还是物理实体网卡。唉,这点知识还是简单入门的《计算机网络编程》的入门给的(现在想起,里面的NTP去除网络时延,服务器多线程和多进程的选择,Server程序等待时延的设定,RPC才是要点)。https://en.wikipedia.org/wiki/Localhost
127.0.0.1是一个回环地址,回环机制可能是用来,当没有一个物理网络接口的情况下来运行一个网络服务。扯远点:https://www.v2ex.com/amp/t/296271/1, http://localhost.wwbizsrv.alibaba.com.ipaddress.com/ 旺旺的一个不知名服务
0.0.0.0代表本机任意IPV4地址,当你启动一个webServer时,IP这样定,localhost也能连上,192.168.43.88也行。0.0.0.0代表本机任意IPV4地址,当你启动一个webServer时,IP这样定,localhost也能连上,192.168.43.88也行。https://en.wikipedia.org/wiki/0.0.0.0 wiki上也说了0.0.0.0/0代表一个默认路由。 所以客户端向哪个IP发起连接,服务器就能看到该本机IP下的一个ESTABLISH。
python-regex-thread-localhost
最新推荐文章于 2025-01-11 15:28:35 发布