第1关:查找第一个匹配的字符串

educoder数据结构 字符串匹配 第1关:实现朴素的字符串匹配 任务描述 本关任务是实现函数int FindSubStr(char* t, char* p)。 相关知识 在一个长字符串中寻找一个短字符串出现的位置,这是字符串匹配问题。 例如:长字符串是 “string” ,短字符串是 “ring” ,那么短字符串在长字符串中出现的位置是 2 ,即 “ring” 在 “string” 中出现的开始位置是 2 。 编程要求 本关的编程任务是补全 step1/mystr.cpp 文件中的FindSubStr函数,以实现朴素的字符串匹配。 具体请参见后续测试样 阅读详情
AI摘要

本篇博客介绍了如何在Python中使用正则表达式库`re`,特别是`search`方法来检查学生名字是否存在于信息中。通过一个简单的例子展示了如何匹配特定字符串并获取匹配的位置。

任务描述
本关任务:学会导入python的正则表达式库,使用该库方法的search方法编写一个匹配小程序。该方法能查看某个学生名字是否在此学生信息中。

相关知识

为了完成本关任务,你需要掌握:

  1. 如何在 python 中引入正则表达式库;
  2. re库中search方法的使用。

1、在Python 中使用正则表达式

正可谓人生苦短,我用Python。Python有个特点就是库非常多,自然拥有正则匹配这种常见的库,并且此库已经嵌入在Python标准库中,使用起来非常方便,只需要在代码中导入re模块即可。

import re  

Python的re模块,使得Python具备了使用全部正则表达式的功能。为了让我们灵活的使用正则表达式,现在咱们的任务就是学习正则在re库中的使用。

2、最基础正则表达式

正则表达式是一个以简单直观的方式通过寻找模式匹配文本的工具。
听起来比较复杂,实际非常简单,下面开始体验最简单的正则表达式。最简单的正则表达式是些仅包含简单字母数字字符的表达式——不包含任何其他字符,在这种情况下正则表达式完完全全就是一个正常的字符串。

举例说明,我们要匹配张明,那么张明这两个字符就是我们需要的正则表达式。

3、正则匹配函数

知道了最基础正则表达式,可是如何在python中使用了?首先我们学习第一个函数,search()函数,它的目的是接收一个正则表达式和一个字符串,并返回发现的第一个匹配的字符串。

import re
a = re.search(r'fox','the quick brown fox jumpred')  #第一个参数为正则表达式,第二个参数为要处理的字符串  
print(a.span())      # span方法获取的是正则表达式匹配到的位置
b =  re.search(r'www','the quick brown fox jumpred')   
print(b)   #如果匹配不到则会返回None  

输出如下:

(16, 19)  
None  

如何匹配到了,我们输出他在正则表达式中的位置,如果没有匹配到,则输出为空。

编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  1. 导入相关包;
  2. 查看此信息是不是张明的信息,查找结果存储在is_zhangming变量中。

测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
测试输入:张伟 86-14870293148;
预期输出:
None
测试输入:张明;
预期输出:
(0,2)*

# coding=utf-8

# 在此导入python正则库
########## Begin ##########

import re
########## End ##########

check_name = input()
# 在此使用正则匹配'张明'的信息,结果存储到is_zhangming中
########## Begin ##########
is_zhangming = re.search('张明',check_name)

######### End ##########

if is_zhangming :
    print(is_zhangming.span())
else:
    print(is_zhangming)

educoder数据结构 字符串匹配 第2关:实现KMP字符串匹配 任务描述 本关的编程任务是补全 step2/kmp.cpp 文件中的KmpGenNext函数,以实现 KMP 字符串匹配。该函数生成给定字符串的next数组。 相关知识 第 1 关中实现的朴素的字符串匹配算法在实际应用系统中效率低,而 KMP 字符串匹配算法可以实现高效的匹配。 假设长字符串为t,短字符串为p。为了进行 KMP 匹配,首先需要计算字符串p的next数组,后面实现了计算该数组的函数void KmpGenNext(char* p, int* next)。对于 “abcabcab” ,计算 阅读详情

相关推荐

第1关:实现朴素的字符串匹配 and 第2关:实现KMP字符串匹配

样例输入: string tri 样例输出: Location: 1 int FindSubStr(char* t, char* p) /* 从字符串t查找子字符串p。 字符串以数值结尾,例如p="str",那么p[0]='s',p[1]='t',p[2]='r',p[3]=0。 采用朴素的匹配算法。 返回子字符串第一次出现的位置,例如t="string ring",p="ring",则返回2。 若没有找到,则返回-1。 */ { // 请在此添加代码,补全函数FindSubStr /*

weixin_51994374的博客 5002

简单字符串处理

介绍C++、Java、Python的字符串处理函数。大量习题。

罗勇军的博客 9496

正则表达式入门

第1关:查找第一个匹配的字符串 本关任务:学会导入python的正则表达式库,使用该库方法的search方法编写一个匹配小程序。该方法能查看某个学生名字是否在此学生信息中。 # coding=utf-8 # 在此导入python正则库 ########## Begin ########## import re ########## End ########## check_name = input() # 在此使用正则匹配'张明'的信息,结果存储到is_zhangming中 ######

Junds0的博客 1887

正则表达式入门[头歌题解]

【代码】正则表达式入门[头歌题解]

qq_27159935的博客 3413

从零开始:小鼠Bulk RNA-seq全流程实战指南

本文提供了一份详尽的小鼠Bulk RNA-seq全流程实战指南,涵盖从软件环境搭建、原始数据质控与清洗、序列比对、基因定量到下游差异表达分析与功能富集。内容面向生物信息学新手,通过清晰的代码示例和步骤解析,帮助读者系统掌握Bulk RNA-seq数据分析的核心技能,并产出可靠的生物学洞见。

lake5的博客 715

机器视觉避坑指南:为什么你的Halcon划痕检测总漏检?(附优化方案)

本文深入剖析了Halcon在表面划痕检测中漏检率高的常见原因,如灰度值波动、噪声干扰及形态学参数设置不当。针对复杂背景与低对比度划痕,提出了超越官方例程的多尺度纹理分析与特征融合优化方案,旨在帮助开发者构建更鲁棒、稳定的机器视觉检测流程,有效提升检出率。

weixin_29057163的博客 234

day17【代码随想录】找出字符串中第一个匹配项的下标 、重复的子字符串

找出字符串中第一个匹配项的下标 、 重复的子字符串

qq_42338744的博客 560

使用mne包来对脑电数据进行预处理(一)

MNE(MNE-Python)是一个用于处理脑电(EEG)、磁图(MEG)和其他神经科学数据的Python库。它提供了丰富的功能,包括数据加载、预处理、分析和可视化,旨在帮助研究人员和神经科学家更轻松地进行脑电数据的处理和分析。在本文中,我们使用mne来对不同的格式的脑电数据集进行数据读取。

m0_71596228的博客 4304

头歌(C语言)-数据结构与算法-字符串匹配-第1关:实现朴素的字符串匹配

例如:长字符串是 “string” ,短字符串是 “ring” ,那么短字符串在长字符串中出现的位置是 2 ,即 “ring” 在 “string” 中出现的开始位置是 2。在一个长字符串中寻找一个短字符串出现的位置,这是字符串匹配问题。本关的编程任务是补全 step1/mystr.cpp 文件中的。以上内容仅供参考哟,大家还需独立完成,巩固知识点^-^函数,以实现朴素的字符串匹配。

weixin_59436900的博客 1658

Cadence笔记--原理图导入PCB

根据PCB尺寸画PCB外观尺寸,这里注意X\Y不能超过指定的区域,X\Y的最大值在setuo的grids里设置,画完后保存并关闭工程然后重新打开(不理解为何)由于只画了一个PMU6050,所以这里只有一个器件。工程选择board,选择存储路径和名称。6、重新网格导入,保证网表导入无误;注意网表保存的路径。

weixin_51418325的博客 1961

KCP(快速可靠UDP)——用带宽换延迟的极致艺术

想象你是一个外卖平台的调度员。这就是KCP的本质——

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 202

Java在字符串中查找匹配的子字符串

Java在字符串中查找匹配的子字符串

taotao12312的博客 10万+

【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)

简洁易懂的车牌号识别Python实现(含代码)1、整体思路2、代码详解 1、整体思路 2、代码详解

qq_40784418的博客 9万+

第1关:实现朴素的字符串匹配

int FindSubStr(char* t, char* p); #include <stdio.h> #include <stdlib.h> #include "mystr.h" #pragma warning(disable:4996) int main() { // to test finding the first son string char t[100]; // mother string char p[100]; // son string scanf(

Keep_Trying_Go的博客 4101

Google Cameraserver 看门狗CameraServiceWatchdog超时crash原理分析

本文分析了Android CameraServiceWatchdog机制的工作原理。该看门狗用于监控相机服务关键操作(如close、flush)的超时情况,通过定时器线程检测阻塞问题。文章详细讲解了Watchdog的初始化流程、使能方式、内部定时器机制(默认周期100ms,650次循环触发超时),并提供了configureStreams阶段的客制化实现方案。当检测到超时,Watchdog会触发abort生成tombstone日志,便于调试分析。

1130

Python的单元测试之unittest

是一个功能类似 unittest 的库,它集合众家标准测试库之所长,和 unittest 相比,功能更为强大,使用更为简单,OpenStack 广泛的利用它编写单元测试。unittest 提供了自动匹配发现并执行测试用例的功能,随着项目代码结构越发庞大,势必有多个测试文件,自动匹配发现并测试用例的功能在此就显得非常有用,只要满足。unittest 提供了丰富的命令行入口,可以根据需要执行某些特定的用例。的测试用例都会被 unittest 发现并执行,测试用例文件的默认匹配规则为 test*.py。

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 283

查找主串中是否还有子串,如果有则返回匹配的第一个位置

题目: 查找主串中是否还有子串,如果有则返回匹配的第一个位置,否则返回-1 #include #include int Index(char *origine, char *target) { if (origine ==NULL||target == NULL) //先检查是否为空 { printf("there is a false\n"); return -1;

lwj103862095的专栏 4821

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

字符串匹配:字符串中查找某子串

基于C语言的字符串匹配算法,既有常规方法,又有KMP算法。

4918

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode:28. 找出字符串中第一个匹配项的下标 ——【1、理解 KMP 算法】

LeetCode:28. 找出字符串中第一个匹配项的下标 ——【1、理解 KMP 算法】 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

Super algorithm 的博客,技术爱好者。 807

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LeetCode 28 找出字符串中第一个匹配项的下标

字符串匹配的kmp算法

yzd111的博客 1239

算法题 找出字符串中第一个匹配项的下标

摘要 本文介绍了在字符串中查找子串位置的两种算法:暴力匹配法和KMP算法。暴力匹配法通过双重循环逐个比较字符,时间复杂度为O(n×m)。KMP算法利用预处理构建的next数组优化匹配过程,时间复杂度为O(n+m)。文章详细说明了两种算法的实现思路、代码示例、时间复杂度和应用场景,并提供了测试用例验证算法的正确性。关键点在于理解KMP算法的next数组构建和指针回退机制,以及根据实际需求选择合适的匹配算法。

红血哥 1068

python字符串查找匹配_python 字符串的匹配与查找

在日常工作中,尤其是根据日志定位,我们常常需要手动搜索大量的关键字符串,进行问题定位。第一次可能是技术的学习,那么从第二次开始,就开始是大量的体力劳动,遵循凡事重复的体力劳动,都交给python的原则,我们可以利用python把我们需要的字符串都找出来,避免纯手工操作。1、正则表达式正则表达式,几乎是计算机领域绕不过去的一种手段了,毕竟机器并不是人,比如人看到100-109这些自然会认为是数值。并...

weixin_39982537的博客 2429

头歌实训数据结构与算法 - 字符串匹配(第1关:实现朴素的字符串匹配)

本关任务是实现函数。

B5201234的博客 790

力扣面试经典题 | 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。本题要在文本串字符串中找出模式串出现的第一个位置 (从0开始),所以返回当前在文本串匹配模式串的位置i 减去 模式串的长度,就是文本串字符串中出现模式串的第一个位置。如果 s[i] 与 t[j + 1] 不相同,j就要从next数组里寻找下一个匹配的位置。如果j指向了模式串t的末尾,那么就说明模式串t完全匹配文本串s里的某个子串了。KMP算法经典题目。

方可申不翘二郎腿的博客 1259

leetcode0028 找出字符串中第一个匹配项的下标-easy

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。

weixin_37253733的博客 998
上一篇: 第5关:Numpy的拆分
下一篇: 第2关:基础正则表达式--字符组
-阿呆-
博客等级 码龄6年 712粉丝 89原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-阿呆-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值