使用正则表达式来搜索文本是高效快捷的方式
比如要搜索下文中的红色字体,
123testkeyword is ok
首先,我写了一个这样的正则表达式:
reg = re.compile("", re.I)
ret = reg.search("testkeyword is ok")
\s表示匹配空格,\S表示匹配非空格,将这两种情况加在一起:[\s|\S]就表示匹配任意字符,包括字母、数字、换行符、空格等等;*表示之前的[\s|\S]可以出现0次或多次,*?则表示懒惰匹配,也就是配备离keyword最近的一个,使用这个表达式匹配的最后结果是:
123testkeyword is ok
也就是只去掉了和,而关键字"keyword"之前的显然是过渡匹配了,
现在需要改进之前的那个正则表达式,需要否定keyword的之前出现的,这样就可以保证获得的字符串中不含.
这时候就需要用否定环视来解决了。否定环视的具体用法是: 表达式 说明 (?正则表达式改为 reg = re.compile(").)*?keyword[\s|\S]*?", re.I) (?:(?).)*?表示在这个正则表达式的左侧,不能出现
比如要搜索下文中的红色字体,
123testkeyword is ok
首先,我写了一个这样的正则表达式:
reg = re.compile("", re.I)
ret = reg.search("testkeyword is ok")
\s表示匹配空格,\S表示匹配非空格,将这两种情况加在一起:[\s|\S]就表示匹配任意字符,包括字母、数字、换行符、空格等等;*表示之前的[\s|\S]可以出现0次或多次,*?则表示懒惰匹配,也就是配备离keyword最近的一个,使用这个表达式匹配的最后结果是:
123testkeyword is ok
也就是只去掉了和,而关键字"keyword"之前的显然是过渡匹配了,
现在需要改进之前的那个正则表达式,需要否定keyword的之前出现的,这样就可以保证获得的字符串中不含.
这时候就需要用否定环视来解决了。否定环视的具体用法是: 表达式 说明 (?正则表达式改为 reg = re.compile(").)*?keyword[\s|\S]*?", re.I) (?:(?).)*?表示在这个正则表达式的左侧,不能出现