深度剖析华为Python笔试题,竟解锁12种正则表达式技巧?

2026-05-21 18:255阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计804个文字,预计阅读时间需要4分钟。

深度剖析华为Python笔试题,竟解锁12种正则表达式技巧?

“家人们好,这里是程序员的晚宴。今天,我们用一道华为笔试题深入掌握一项Python技巧:正则表达式。

一、题目解析本题目要求我们使用正则表达式来完成特定的字符串匹配任务。

二、常用方法

1.匹配单个字符:使用 `.` 可以匹配除换行符以外的任意单个字符。

深度剖析华为Python笔试题,竟解锁12种正则表达式技巧?

2.匹配多个字符:使用 `*` 可以匹配前面的子表达式零次或多次。

3.匹配指定字符集:使用方括号 `[]` 可以匹配括号内的任意一个字符。

三、专业方法

1.使用 `re` 模块:Python 的 `re` 模块提供了丰富的正则表达式功能。

2.使用 `re.findall()` 方法:查找所有匹配的子串。

3.使用 `re.search()` 方法:查找第一个匹配的子串。

四、注意事项

1.区分大小写:默认情况下,正则表达式是区分大小写的。

2.转义特殊字符:如果需要在正则表达式中使用特殊字符,需要对其进行转义。

3.性能优化:对于复杂的正则表达式,可能需要考虑性能优化。

大家好,这里是程序员晚枫。

今天用一道华为笔试题,带大家深入掌握一项Python技巧:正则表达式。

本文主要分为4个部分:题目解析、常用方法、专业方法、注意事项

一、题目解析

先来看一下题目。

看完题目,有以下2个解题思路:

  • 纯手写:首先把输入的字符串,用0补全为8的倍数,然后遍历字符串,每8个组成一个新的字符。
  • 使用内置方法和标准库:使用str的内置方法,用0补全右侧,然后使用正则每8个字符进行匹配。

    1、思路1:纯手写

    def cut_8ch(str): if len(str) < 8: str = str.ljust(8, '0') elif len(str) > 8: if (len(str) % 8) != 0: width = len(str) + (8 - len(str) % 8) str = str.ljust(width, '0') str2List = [] i = 0 while i < len(str): if (i + 8) < len(str): str2List.append(str[i:i+8]) else: str2List.append(str[i:len(str)]) break i = i + 8 return str2List
  • output = []tmp = input('请输入字符串-->>').strip()output.append(cut_8ch(tmp))

    for x in output:for y in x:print(y)

    ### 2、思路2:使用内置方法和标准库 ```python import re str = input('请输入字符串-->>') if len(s) % 8 != 0: s = s.ljust(len(s) + (8 - len(s) % 8), str(0)) res = re.findall('.{8}', s) [print(r) for r in res]

    很明显,思路2实现起来,逻辑更清晰,代码更简洁。原因在哪里呢?

    今天我们重点讲一下re模块的使用。关于str的所有自带方法,如果大家想看的话,可以在评论区告诉我,我可以另写一个篇新的文章来介绍。

    二、常用方法

    按照惯例,我们对Python知识的解析,直接拿源码来研究。先看一下python源码里,re模块提供的12个方法

    本文共计804个文字,预计阅读时间需要4分钟。

    深度剖析华为Python笔试题,竟解锁12种正则表达式技巧?

    “家人们好,这里是程序员的晚宴。今天,我们用一道华为笔试题深入掌握一项Python技巧:正则表达式。

    一、题目解析本题目要求我们使用正则表达式来完成特定的字符串匹配任务。

    二、常用方法

    1.匹配单个字符:使用 `.` 可以匹配除换行符以外的任意单个字符。

    深度剖析华为Python笔试题,竟解锁12种正则表达式技巧?

    2.匹配多个字符:使用 `*` 可以匹配前面的子表达式零次或多次。

    3.匹配指定字符集:使用方括号 `[]` 可以匹配括号内的任意一个字符。

    三、专业方法

    1.使用 `re` 模块:Python 的 `re` 模块提供了丰富的正则表达式功能。

    2.使用 `re.findall()` 方法:查找所有匹配的子串。

    3.使用 `re.search()` 方法:查找第一个匹配的子串。

    四、注意事项

    1.区分大小写:默认情况下,正则表达式是区分大小写的。

    2.转义特殊字符:如果需要在正则表达式中使用特殊字符,需要对其进行转义。

    3.性能优化:对于复杂的正则表达式,可能需要考虑性能优化。

    大家好,这里是程序员晚枫。

    今天用一道华为笔试题,带大家深入掌握一项Python技巧:正则表达式。

    本文主要分为4个部分:题目解析、常用方法、专业方法、注意事项

    一、题目解析

    先来看一下题目。

    看完题目,有以下2个解题思路:

  • 纯手写:首先把输入的字符串,用0补全为8的倍数,然后遍历字符串,每8个组成一个新的字符。
  • 使用内置方法和标准库:使用str的内置方法,用0补全右侧,然后使用正则每8个字符进行匹配。

    1、思路1:纯手写

    def cut_8ch(str): if len(str) < 8: str = str.ljust(8, '0') elif len(str) > 8: if (len(str) % 8) != 0: width = len(str) + (8 - len(str) % 8) str = str.ljust(width, '0') str2List = [] i = 0 while i < len(str): if (i + 8) < len(str): str2List.append(str[i:i+8]) else: str2List.append(str[i:len(str)]) break i = i + 8 return str2List
  • output = []tmp = input('请输入字符串-->>').strip()output.append(cut_8ch(tmp))

    for x in output:for y in x:print(y)

    ### 2、思路2:使用内置方法和标准库 ```python import re str = input('请输入字符串-->>') if len(s) % 8 != 0: s = s.ljust(len(s) + (8 - len(s) % 8), str(0)) res = re.findall('.{8}', s) [print(r) for r in res]

    很明显,思路2实现起来,逻辑更清晰,代码更简洁。原因在哪里呢?

    今天我们重点讲一下re模块的使用。关于str的所有自带方法,如果大家想看的话,可以在评论区告诉我,我可以另写一个篇新的文章来介绍。

    二、常用方法

    按照惯例,我们对Python知识的解析,直接拿源码来研究。先看一下python源码里,re模块提供的12个方法