使用\(和\)符号括起正则表达式,即可在后面使用\1、\2等变量来访问\(和\)中的内容。
[^,]表示非","的任意字符
*匹配0或任意个
// 向下整除
abs() 绝对值
split()函数 在没有参数的情况下,函数默认会以空格、回车符、空格符等作为分割条件
capitalize() 首字母大写,其余字母小写
" ".join 以" "中间的字符连接join 后面的字符
[::-1] 将数字或字符倒序输出
range(5)等价于range(0,5)
zfill() 返回指定长度的字符串,原字符串右对齐,前面填充0
x for x in arr if ... else ...
和 x if ... else ... for x in arr
是不一样的
e.g. sort the odd
def sort_array(arr):
odds = sort((x for x in arr if x % 2 != 0),reverse = True)
return [x if x % 2 == 0 else odds.pop() for x in arr]
上例中,for循环放在最后可生效,如果for放在前面,那么for ... if ... 为一段,后面的else不产生循环
以后有for如果接的不止一个if还有else的,需要注意for放在最后
while "{}" in s or "()" in s or "[]" in s:
s = s.replace("{}","")
s = s.replace("()","")
s = s.replace("[]","")
return s == ""
此处的while语句如果删掉,直接替换就会报错。因为要多次执行replace而不是一次。询问一下,更复合逻辑。
shift+~ 改大小写
... | tee ... 写入后面的文件中
python字典in操作符用于判断键是否存在于字典中,如果键在字典中返回True,否则返回False。而not in 操作符刚好相反,如果键在字典中返回False。
list() 方法用于将元组转换成列表
原始字符串(raw string)是所有的字符串都按照字面的意思来使用,如: print(r"\blake")
\blake
findall总返回一个列表,如果没有找到则返回空:
reObj1.findall(s)
或者 findall(r"[:;][-~]?[)D]"," ".join(arr))
?为非贪婪匹配
colou?r ?问号代表前面的字符最多只出现一次(0次或1次)
另外:
+ 匹配1次或多次,为贪婪匹配
* 匹配0次或1次或多次
经典案例:
案例一:
重复的2行并成一行:
:%s/^\(.*\)\n\1$/\1/g
案例二:
重复多行压缩成1行:
:%s/^\(.*\)\(\n\1\)\+$/\1/g
案例三:
将所有方法foo(a,b,c)的实例改为foo(b,a,c)
e.g foo(bar(8),x+y+z,5) -> foo(x+y+z,bar(8),5)
:%s/foo(\([^,]*\),\([^,]*\),\([^,]*\))/foo(\2,\1,\3)/g
本文介绍了正则表达式的使用,包括[^,]匹配非逗号字符,*匹配任意数量的字符,以及在Python中的应用,如split()函数、capitalize()方法、join()函数和切片操作。还讨论了for循环和if...else...的嵌套用法,以及while循环在字符串替换中的作用。同时,文章展示了如何使用正则表达式进行非贪婪匹配和替换,并给出了几个经典的正则表达式实战案例,如压缩重复行和改变方法参数顺序。

227

被折叠的 条评论
为什么被折叠?



