zoukankan      html  css  js  c++  java
  • 正则表达式匹配非某字符串的情况

    正则表达式中,如果想要不匹配某个字符可以使用如下

    [^a]* 表示匹配除了a以外的所有字符
    [^abc]* 表示匹配除了a、b、c以外的所有字符,注意这里不是abc字符串,而是a、b、c任何一个字符都不匹配

    当我们要不匹配某个字符串或者中文词组的时候,可以这样用
    ((?!天空).)* 这个表示匹配出'天空'之外的所有字符
    事实上,说正则表达式里不支持逆向匹配并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向匹配。每个空字符都会检查其前面的字符串是否不是'天空',如果不是,这.(点号)就是匹配捕捉这个字符。表达式(?!天空).只执行一次,所以,我们将这个表达式用括号包裹成组(group),然后用*(星号)修饰——匹配0次或多次,这种正则表达式的“查找”也叫做“zero-width-assertions”(零宽度断言),因为它不会捕获任何的字符,只是判断

    import re
    string = '太阳天空照,花儿对我笑'
    result = re.findall(r'^(?:(?!天空).)*?花儿.*$', string)
    print(result)
    # []
    string = '太阳空中照,花儿对我笑'
    result = re.findall(r'^(?:(?!天空).)*?花儿.*$', string)
    print(result)
    # ['太阳空中照,花儿对我笑']
    
  • 相关阅读:
    PHP定时任务实现(计划任务 vs node.js)
    第三方支付,代支付接口调用
    iframe调用页面中的局部部分
    树状数据删除(TP5)
    PHP 代码编写注意事项总结归纳
    MySQL 存储过程与事物
    radio与checkbox的选中事件
    简单十步让你全面理解SQL
    生成条形码
    使2个div 在一行上显示
  • 原文地址:https://www.cnblogs.com/zongfa/p/14818734.html
Copyright © 2011-2022 走看看