您当前的位置:首页 > 计算机 > 编程开发 > Python

Python正则表达式查找最长数字子串(好未来2017笔试题)

时间:12-24来源:作者:点击数:

问题描述:读入一个字符串str,输出字符串str中的连续最长的数字串。

思路与代码:

def longest1(s):

    '''查找所有连续数字'''

    import re

    t = re.findall('\d+', s)

    if t:

        return max(t, key=len)

    return 'No'

def longest2(s):

    '''使用非数字作为分隔符'''

    import re

    t = re.split('[^\d]+', s)

    if t:

        return max(t, key=len)

    return 'No'

def longest3(s):

    '''笨办法'''

    result = []

    t = []

    # 遍历字符串中所有字符

    for ch in s:

        # 遇到数字,记录到临时变量

        if '0'<=ch<='9':

            t.append(ch)

        elif t:

            # 遇到非数字,把临时变量中的连续数字记下来

            result.append(''.join(t))

            t = []

    # 考虑原字符串以数字结束的情况

    if t:

        result.append(''.join(t))

        

    if result:

        return max(result, key=len)

    return 'No'

s = 'ab1dc12ds2345r111111111'

print(longest1(s))

print(longest2(s))

print(longest3(s))

运行结果:

111111111

111111111

111111111

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门