zoukankan      html  css  js  c++  java
  • 使用正则表达式的技巧

    import re
    
    # 从"1-2*(60+(-40.35/5)-(-4*3))"中取整数
    ret=re.findall(r"d+","1-2*(60+(-40.35/5)-(-4*3))")
    print(ret) #['1', '2', '60', '40', '35', '5', '4', '3'] 把40.35当成两个数了
    # 你要匹配的内容太没有特点了 容易和你不想匹配的内容混在一起
    
    
    ret= re.findall(r"d+.d+|d+","1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)#['1', '2', '60', '40.35', '5', '4', '3'] 已经把小数问题解决了,但是还是不对
    
    
    ret= re.findall(r"d+.d+|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    print(ret) #['1', '2', '60','', '5', '4', '3']
    # 通过优先显示已经把小数过滤掉了,但是为什么会有空字符串呢,可以把|两边都加上括号看下
    
    
    ret= re.findall(r"(d+.d+)|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    print(ret)#[('', '1'), ('', '2'), ('', '60'), ('40.35', ''), ('', '5'), ('', '4'), ('', '3')]
    # 元组里左边显示的是小数,右边显示的是整数.
    # 现在可以把上一个再优化一下
    
    
    ret= re.findall(r"d+.d+|(d+)","1-2*(60+(-40.35/5)-(-4*3))")
    print(ret) #['1', '2', '60', '', '5', '4', '3']
    ret.remove("") #把空字符串去掉
    print(ret) #['1', '2', '60', '5', '4', '3']
    # 这回就拿到了所有的整数了
  • 相关阅读:
    LeetCode-Maximum Gap
    LintCode-Implement Queue by Stacks
    LintCode-Search Range in Binary Search Tree
    LintCode-BackPack II
    LintCode-Minimum Subarray
    LintCode-Sort Letters by Case
    LintCode-Longest Common Subsequence
    POJ 2226
    POJ 2724
    POJ 3692
  • 原文地址:https://www.cnblogs.com/kenD/p/9494303.html
Copyright © 2011-2022 走看看