在正则中,使用.*可以匹配所有字符,其中.代表除\n外的任意字符,*代表0-无穷个,比如说要分别匹配某个目录下的子目录:
>>> import re
>>> match = re.match(r"/(.*)/(.*)/(.*)/", "/usr/local/bin/")
>>> match.groups()
('usr', 'local', 'bin')
比如像上面,使用(.*)就能很好的匹配,但如果字符串中里面即有TAB键,又有空格,要匹配出来,如何匹配呢?比如说像"Hello Python World!", Hello到Python之间,即有空格键,又有TAB键,而且可能有1到多个,这个直接用(.*)就连"Python "给匹配到了,从下面可以看到两个TAB,两个空格键,还有Python都匹配到了。
>>> import re
>>> match = re.match(r"Hello(.*)World!", "Hello Python World!")
>>> match.group(1)
'\t\t Python '
要想匹配到TAB和空格的混合字符,可以使用下面的两个小技巧:
1). 使用\s来匹配
>>> import re
>>> match = re.match(r"Hello(\s*)(.*)World!", "Hello Python World!"
>>> match.groups()
('\t\t ', 'Python ')
2). 使用[\t ]来匹配
>>> import re
>>> match = re.match(r"Hello([\t ]*)(.*)World!", "Hello Python World!"
>>> match.groups()
('\t\t ', 'Python ')
上面的小技巧,都能完美匹配TAB和空格键.
Pattern p = Pattern.compile("\\s{2,}|\t");
Matcher m = p.matcher(str);
String strNoBlank = m.replaceAll(" ");
System.out.println(strNoBlank);
使用正则表达式时,需要导入包,import re ,简单使用如下:
匹配字符串的几个方法
match :从第一个单词开始匹配,若匹配成功,则返回一个对象;若没有匹配数据,则返回None
import re
s = 'besttest is gobeod be '
# match方法接收3个参数,第一个参数是匹配规则,也就是你要匹配的内容,第二个参数是要查找的字符串,第三个...
今天github上下载了一个
python脚本,一运行报 IndentationError: unindent does not match any outer indentation level,
看错误,顾名思义,代码没有对齐,然后使用notepat++打开脚本,再选择视图-->显示符号--->显示
空格和制表符.
字符功能*
匹配前一个字符出现0次或者无限次,即可有可无+
匹配前一个字符出现1次或者无限次,即至少有1次?
匹配前一个字符出现1次或者0次,即要么有1次,要么没有{m}
匹配前一个字符出现m次{m,}
匹配前一个字符至少出现m次{m,n}
匹配前一个字符出现从m到n次
什么是正则表达式?
简单地说,正则表达式就是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊符号的辅助,可以让用户轻易地完成【查找、删除、替换】某特定字符串的处理过程。
正则表达式基本上是一种**【表示法】**,只要程序支持这种表示法,那么该程序就可以用来作为正则表达式的字符串处理。
正则表达式的字符串表示方式依照不同的严谨度分为:基础正则表达式、扩展正则表达式。
用途:邮件服务器
注意:正则表达式与通配符是完全不一样的东西,因为【通配符代表的是bash操作接口的一个功能】,但是
图解Linux命令之--badblocks命令
mingqiu09: