正则表达式练习题1

合集下载

单元4 序列数据与正则表达式操作——字符串试题及答案

单元4  序列数据与正则表达式操作——字符串试题及答案

单元4 序列数据与正则表达式操作——字符串试题及答案(一)选择题1.Python解释器执行'123'.isdigit()方法返回的结果是()。

[单选题] *A.True(正确答案)B.FalseC.'True'D.因语法错误而报错2.Python解释器执行'-'.join({'a':'b','c':'d'})的结果为()。

[单选题] *A.'a-c'(正确答案)B.'a-b-c-d'C.'b-d'D.报错3.Python中,判断一个字符串是否全由数字组成的方法为str.isnumeric(),那么在Python 3中执行print('123'.isnumeric(),u'123'.isnumeric())得到的结果为()。

[单选题] *A.Ture FalseB.False TrueC.Ture True(正确答案)D.True 报错4.Python 3解释器执行'AB2C3D'.lower().title()的结果是()。

[单选题] *A.'Ab2c3d'B.'Ab2C3D'(正确答案)C.'AB2C3D'D.语法错误5.在Python中,字符串s = 'abc',那么执行表达式s+'d'之后,s的打印结果是()。

[单选题] *A.'abc'(正确答案)B.'abcd'C.'abc+d'D.报错6.关于字符串的replace()方法,正确的选项是()。

*A.replace()方法如果没有替换成功则报错B.replace()方法如果没有替换成功则将原字符串返回(正确答案)C.replace()方法如果替换成功则返回新的字符串(正确答案)D.replace()方法如果替换成功则返回原字符串7.Python解释器执行'1234'.find('5')的结果是()。

Java正则表达式练习

Java正则表达式练习

Java正则表达式练习⼀、导读 正则表达式,⼜称规则表达式。

(英⽂名Regular Expression,所以代码中常以regex、regexp、RE表⽰)。

正则表达式简单说就是⽤于操作⽂本数据的规则表达式,在Java 中我们使⽤正则表达式来对字符串进⾏“有规则的操作”,没理解没关系,看下⾯的练习就懂了。

正则表达式对字符串的常见操作有:字符串的匹配、切割、替换、获取。

下⾯我们就逐⼀进⾏练习:⼆、正则表达式の规则 既然是表达式,就具有特定的规则,所以我们先看看jdk的⼯具类Pattern对正则表达式的规则的描述:(较多,简单浏览即可,当使⽤到对应的规则是来查阅即可。

)三、字符串の匹配:matches() 练习1:对输⼊的qq号进⾏匹配(qq匹配规则:长度为5-10位,纯数字组成,且不能以0开头。

) 没有学习正则表⽰式之前,我们需要⽤各种if语句来进⾏判断,但现在我们可以使⽤则正表达式的规则来操作:1package RegularExpression;23public class regexTest {4public static void main(String[] args) {5//测试:6 String qq1 = "1832137835";7 String qq2 = "789j9371";8 String qq3 = "22";9 String qq4 = "012189783";10boolean b1 = isQQ(qq1);11boolean b2 = isQQ(qq2);12boolean b3 = isQQ(qq3);13boolean b4 = isQQ(qq4);1415 System.out.println(qq1+"是qq号码吗?"+b1);16 System.out.println(qq2+"是qq号码吗?"+b2);17 System.out.println(qq3+"是qq号码吗?"+b3);18 System.out.println(qq4+"是qq号码吗?"+b4);19 }2021//练习1:匹配QQ号(长度为5-10位,纯数字组成,且不能以0开头)22public static boolean isQQ(String qq) {23//定义匹配规则:24 String regex = "[1-9][0-9]{4,9}";2526//判断是否符合规则27boolean b = qq.matches(regex);2829return b;30 }31 } 运⾏结果: 解析:注意匹配规则被“浓缩”到了字符串regex中,我们只需要⽤"[1-9][0-9]{4,9}"就描述了qq的匹配规则,怎么做到的呢? ⾸先我们在匹配需要“⼀位⼀位地匹配”,qq匹配规则是第⼀位不能是0的纯数字,所以我们⽤[1-9]来表⽰第⼀位的规则;接下来是第⼆位:随意的数字都⾏,所以我们⽤[0-9]来表⽰,按照这个逻辑,当然后⾯的都应该是纯数字即[0-9],但我们需要确定qq的长度只能是5~10,⽽规则⾥我们⽤{}来表⽰范围,即[0-9]{4,9}结合起来就表⽰:4~9个纯数字。

Linux正则表达式练习

Linux正则表达式练习

Linux正则表达式练习练习⼀1、⽣成30位的随机⼝令[root@centos7 ~]#cat /dev/urandom | tr -dc "[:alnum:]" | head -c30RJL5qcA5PsQHnYE4kXui0oNkm1FNh12、判断主机版本号[root@centos7 ~]#grep -o "[0-9]\+" /etc/centos-release | head -n1练习⼆1、找出ifconfig “⽹卡名” 命令结果中本机的IPv4地址ifconfig |egrep -o "\<(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"2、查出分区空间使⽤率的最⼤百分⽐值[root@centos7 ~]#df | grep "/dev/sd" | grep -o "[0-9]*%" | grep -o "[0-9]\+" | sort -n | tail -13、查出⽤户UID最⼤值的⽤户名、UID及shell类型[root@centos7 app]#cat /etc/passwd | sort -nr -t: -k3 | head -n1 | cut -d: -f1,3,7nfsnobody:65534:/sbin/nologin4、查出/tmp的权限,以数字⽅式显⽰⽅法⼀:[root@centos7 app]#stat -c %a /tmp1777⽅法⼆:[root@centos7 app]#stat /tmp | grep Uid | cut -d\( -f2 | cut -d/ -f11777⽅法三stat /tmp | grep Uid | cut -d\( -f2 | head -c45、统计当前连接本机的每个远程主机IP的连接数,并按从⼤到⼩排序显⽰⽂件/etc/init.d/functions所有⽅法⽅法⼀grep ".*{$" /etc/init.d/functions | tr -d {⽅法⼆[root@centos7 ~]#grep -o "^.*()" /etc/init.d/functions规范⽅法三grep "^[[:alnum:]_]\+[[:space:]]*()" /etc/init.d/functions练习三1、显⽰/proc/meminfo⽂件中以⼤⼩写s开头的⾏(要求:使⽤两种⽅法,不要理解以s开头的单词)grep -i "^s.*" /proc/meminfo ⽅法⼀grep "^[Ss].*" /proc/meminfo ⽅法⼆2、显⽰/etc/passwd⽂件中不以/bin/bash结尾的⾏grep -v "/bin/bash$" /etc/passwd3、显⽰⽤户rpc默认的shell程序grep "^rpc\>" /etc/passwd | cut -d: -f74、找出/etc/passwd中的两位或三位数grep -o "\<[0-9]\{2,3\}\>" /etc/passwd5、显⽰CentOS7的/etc/grub2.cfg⽂件中,⾄少以⼀个空⽩字符开头的且后⾯存⾮空⽩字符的⾏grep "^[[:space:]]\+[^[:space:]]" /etc/grub2.cfg6、找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空⽩字符结尾的⾏netstat -tan| grep "LISTEN[[:space:]]*$"7、显⽰CentOS7上所有系统⽤户的⽤户名和UIDcut -d: -f1,3 /etc/passwd | grep "\<[[:digit:]]\{,3\}$""\<[[:digit:]]\{,3\}\>"(123⽤户名能匹配) 注意与上正则区别8、添加⽤户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd⽤户名同shell名的⾏grep "^\(.*\):.*\<\1$" /etc/passwd9、利⽤df和grep,取出磁盘各分区利⽤率,并从⼤到⼩排序df | grep "^/dev/sd" | grep -o "[0-9]\{1,3\}%" | grep -o "[0-9]\{1,3\}" | sort -rn练习四1、显⽰三个⽤户root、mage、wang的UID和默认shell[root@centos7 ~]#grep "^\(root\)\|^\(xiaojun\)\|^\(zilong\)" /etc/passwd | cut -d: -f3,70:/bin/bash1001:/bin/bash1011:/bin/bash2、找出/etc/rc.d/init.d/functions⽂件中⾏⾸为某单词(包括下划线)后⾯跟⼀个⼩括号的⾏[root@centos7 ~]#grep -o "^[[:alpha:]]\+\>(" /etc/rc.d/init.d/functionscheckpid(daemon(killproc(…..3、使⽤egrep取出/etc/rc.d/init.d/functions中其基名echo "/etc/rc.d/init.d/functions" | egrep -o "[^/]+$"扩展:取出/etc/rc.d/init.d/基名[root@centos7 ~]#echo "/etc/rc.d/init.d/" | egrep -o "[^/]+/?$"4、使⽤egrep取出/etc/rc.d/init.d/functions路径的⽬录名[root@centos7 ~]#echo "/etc/rc.d/init.d/functions" | egrep -o "^/.*/" | egrep -o "^/.*[^/]"5、统计last命令中以root登录的每个主机IP地址登录次数last | grep "root" | tr -s " " ":" | cut -d : -f3 | egrep "([0-9]+.){3}[0-9]+" | uniq -c6、利⽤扩展正则表达式分别表⽰0-9:[0-9]10-99 : [1-9][0-9]100-199: 1[0-9][0-9]200-249: 2[0-4][0-9]250-255: 25[0-5]7、显⽰ifconfig命令结果中所有IPv4地址[root@centos7 ~]#ifconfig ens33 | egrep -o "\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>" 192.168.10.150255.255.255.0192.168.10.255。

python 选择题 正则表达式

python 选择题 正则表达式

Python 选择题 - 正则表达式正则表达式是一种强大的文本处理工具,它能够在文本中进行模式匹配、查找、替换等操作。

在Python中,我们可以使用re模块来进行正则表达式的操作。

掌握正则表达式对于Python程序员来说是非常重要的,因此在这里我整理了一些关于Python正则表达式的选择题,希望对大家的学习有所帮助。

1. 正则表达式是用来做什么的?A. 匹配字符串B. 替换字符串C. 查找字符串D. 以上所有选项答案:D2. 下列哪个不是Python中re模块的函数?A. re.matchB. re.searchC. re.findD. re.findall答案:C3. 下列哪个符号用来表示任意单个字符?A. *B. .C. +D. ?答案:B4. 以下哪个是非贪婪匹配?A. *B. +C. *?D. ?答案:C5. 下列哪个函数用来返回所有匹配的字符串列表?A. re.matchB. re.searchC. re.findallD. re.finditer答案:C6. 下列哪个函数用来返回一个匹配的对象?A. re.matchB. re.searchC. re.findallD. re.finditer答案:A7. 如何在正则表达式中表示匹配数字?A. \dB. \wC. \sD. \D答案:A8. 如何在正则表达式中表示匹配非数字字符?A. \dB. \wC. \sD. \D答案:D9. 如何在正则表达式中表示匹配空白字符?A. \dB. \wC. \sD. \S答案:C10. 如何在正则表达式中表示匹配单词字符?A. \dB. \wC. \sD. \S答案:B以上就是关于Python正则表达式的选择题,希望对大家有所帮助。

学习正则表达式需要不断的练习和实践,希望大家能够在学习过程中享受到编程的乐趣,不断提升自己的技能。

感谢大家的阅读!11. 在正则表达式中,如何表示重复匹配某个字符n次?A. {n}B. {n,}C. {n,m}D. *答案:A12. 如果想要匹配一个字符集合中的任意一个字符,应该使用哪个符号?A. |B. ^C. $D.答案:A13. 在正则表达式中,如何表示以某个字符开头的字符串?A. ^B. $C. *D. ?答案:A14. 在正则表达式中,如何表示以某个字符结尾的字符串?A. ^B. $C. *D. ?答案:B15. 下列哪个函数用于替换字符串中的匹配项?A. re.matchB. re.subC. re.replaceD. re.swap答案:B16. 在正则表达式中,如何表示匹配某个字符0次或1次?A. *B. +C. ?D. |答案:C17. 下列哪个函数用于根据正则表达式分割字符串?A. re.splitB. re.divideC. re.separateD. re.cut答案:A18. 如何在正则表达式中表示匹配某个字符至少n次?A. {n}B. {n,}C. {n,m}D. *答案:B19. 在正则表达式中,如何表示匹配某个字符0次或多次?A. *B. +C. ?D. {0,}答案:A20. 如何在正则表达式中表示匹配某个字符至多m次?A. {0,m}B. {1,m}C. {0,m}D. {,m}答案:C21. 正则表达式中的贪婪匹配是怎么工作的?A. 尽可能多地匹配B. 尽可能少地匹配C. 随机匹配D. 不可预测答案:A22. 当使用repile()函数编译正则表达式时,应该传入哪个参数?A. 正则表达式字符串B. 匹配模式C. 替换字符串D. 匹配对象答案:A23. 下列哪个函数用于返回一个迭代器,包含所有匹配的对象?A. re.matchB. re.searchC. re.findallD. re.finditer答案:D24. 如何在正则表达式中表示匹配除了某个字符之外的任意字符?A. .B. \dC. \wD. \W答案:D25. 下列哪个函数用于判断字符串是否以某个模式开头?A. re.startB. re.beginC. re.matchD. re.startswith答案:C以上是关于Python正则表达式的选择题,希望能够帮助大家更好地学习和理解正则表达式的知识。

编译原理第三章练习题答案

编译原理第三章练习题答案

编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要课程之一,它研究的是将高级语言程序转化为机器语言的过程。

在编译原理的学习过程中,练习题是提高理解和应用能力的重要途径。

本文将为大家提供编译原理第三章的练习题答案,希望能够对大家的学习有所帮助。

1. 什么是词法分析?请简要描述词法分析的过程。

词法分析是编译过程中的第一个阶段,它的主要任务是将源程序中的字符序列划分为有意义的词素(token)序列。

词法分析的过程包括以下几个步骤:1)扫描:从源程序中读取字符序列,并将其转化为内部表示形式。

2)识别:根据预先定义的词法规则,将字符序列划分为不同的词素。

3)分类:将识别出的词素进行分类,如关键字、标识符、常量等。

4)输出:将分类后的词素输出给语法分析器进行进一步处理。

2. 什么是正则表达式?请给出一个简单的正则表达式示例。

正则表达式是一种用于描述字符串模式的工具,它由一系列字符和操作符组成。

正则表达式可以用于词法分析中的词法规则定义。

以下是一个简单的正则表达式示例:[a-z]+该正则表达式表示匹配一个或多个小写字母。

3. 请简要描述DFA和NFA的区别。

DFA(Deterministic Finite Automaton)和NFA(Nondeterministic Finite Automaton)是有限状态自动机的两种形式。

它们在词法分析中常用于构建词法分析器。

DFA是一种确定性有限状态自动机,它的状态转换是确定的,每个输入符号只能对应一个状态转换。

相比之下,NFA是一种非确定性有限状态自动机,它的状态转换是非确定的,每个输入符号可以对应多个状态转换。

4. 请简要描述词法分析器的实现过程。

词法分析器的实现过程包括以下几个步骤:1)定义词法规则:根据编程语言的语法规范,定义词法规则,如关键字、标识符、常量等。

2)构建正则表达式:根据词法规则,使用正则表达式描述不同类型的词素。

3)构建有限状态自动机:根据正则表达式,构建DFA或NFA来识别词素。

正则表达式练习题

正则表达式练习题

正则表达式练习题1. 匹配手机号码正则表达式格式:^[1][3-9]\d{9}$2. 匹配邮箱地址正则表达式格式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$3. 匹配URL地址正则表达式格式:^(http|https)://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$4. 匹配身份证号码(18位)正则表达式格式:^[1-9]\d{16}[\dXx]$5. 匹配日期(yyyy-mm-dd)正则表达式格式:^\d{4}-\d{2}-\d{2}$6. 匹配IP地址正则表达式格式:^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$7. 匹配邮政编码(6位)正则表达式格式:^[1-9]\d{5}$8. 匹配HTML标签正则表达式格式:<(\S*?)[^>]*>.*?</\1>|<.*? />9. 匹配中文字符正则表达式格式:^[\u4e00-\u9fa5]+$10. 匹配数字正则表达式格式:^\d+$11. 匹配英文单词正则表达式格式:^[A-Za-z]+$12. 匹配QQ号码正则表达式格式:^[1-9]\d{4,10}$13. 匹配邮件域名正则表达式格式:^([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+(\.[a-zA-Z]{2,4})$14. 匹配16进制颜色码正则表达式格式:^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$15. 匹配XML文件正则表达式格式:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$以上为正则表达式的练习题示例及其匹配格式,可以根据需要进行信息提取、验证或筛选等操作。

《Linux操作系统(第2版) )》课后习题答案

《Linux操作系统(第2版) )》课后习题答案

《Linux操作系统(第2版)》课后习题答案练习题一、选择题1. Linux最早是由计算机爱好者 B 开发的。

A. Richard PetersenB. Linus TorvaldsC. Rob PickD. Linux Sarwar2. 下列 C 是自由软件。

A. Windows XPB. UNIXC. LinuxD. Windows 20003. 下列 B 不是Linux的特点。

A. 多任务B. 单用户C. 设备独立性D. 开放性4. Linux的内核版本是 A 的版本。

~A. 不稳定B. 稳定的C. 第三次修订D. 第二次修订5. Linux安装过程中的硬盘分区工具是 D 。

A. PQmagicB. FDISKC. FIPSD. Disk Druid6. Linux的根分区系统类型是 C 。

A. FATl6B. FAT32C. ext4D. NTFS二、填空题1. GNU的含义是:GNU's Not UNIX。

2. Linux一般有3个主要部分:内核(kernel)、命令解释层(Shell或其他操作环境)、实用工具。

3. 安装Linux最少需要两个分区,分别是swap交换分区和/(根)分区。

4. Linux默认的系统管理员账号是root 。

;三、简答题(略)1.简述Red Hat Linux系统的特点,简述一些较为知名的Linux发行版本。

2.Linux有哪些安装方式安装Red Hat Linux系统要做哪些准备工作3.安装Red Hat Linux系统的基本磁盘分区有哪些4.Red Hat Linux系统支持的文件类型有哪些练习题一、选择题1. C 命令能用来查找在文件TESTFILE中包含四个字符的行A. grep’’TESTFILEB. grep’….’TESTFILEC. grep’^$’TESTFILED. grep’^….$’TESTFILE—2. B 命令用来显示/home及其子目录下的文件名。

正则表达式

正则表达式
例2
假设有一个CSV(comma separated value)文件,里面有一些我们需要的信息,但是格式却有问题,目前数据的列顺序是:姓名,公司名,州名缩写,邮政编码,现在我们希望讲这些数据重新组织,以便在我们的某个软件中使用,需要的格式为:姓名,州名缩写-邮政编码,公司名。也就是说,我们要调整列顺序,还要合并两个列来构成一个新列。另外,我们的软件不能接受逗号前后面有任何空格(包括空格和制表符)所以我们还必须要去掉逗号前后的所有空格。
现在让我们把它打散来加以分析。写出这个表达式的基本思路是找出foo()和它的括号中的三个参数的位置。第一个参数是用这个表达式来识别的::\([^,]*\),我们可以从里向外来分析它:
[^,] 除了逗号之外的任何字符
[^,]* 0或者多个非逗号字符
\([^,]*\) 将这些非逗号字符标记为,这样可以在之后的替换模式表达式中引用它
|
将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
+
匹配1或多个正好在它之前的那个字符。例如正则表达式9+匹配9、99、999等。注意:这个元字符不是所有的软件都支持的。
\([^,]*\), 我们必须找到0或者多个非逗号字符后面跟着一个逗号,并且非逗号字符那部分要标记出来以备后用。
现在正是指出一个使用正则表达式常见错误的最佳时机。为什么我们要使用[^,]*这样的一个表达式,而不是更加简单直接的写法,例如:.*,来匹配第一个参数呢?设想我们使用模式.*来匹配字符串"10,7,2",它应该匹配"10,"还是"10,7,"?为了解决这个两义性(ambiguity),正则表达式规定一律按照最长的串来,在上面的例子中就是"10,7,",显然这样就找出了两个参数而不是我们期望的一个。所以,我们要使用[^,]*来强制取出第一个逗号之前的部分。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

正则表达式与grep命令的实战演练
1,显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行;
2, 显示/etc/passwd中以sh结尾的行;
3, 显示/etc/fstab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
4, 查找/etc/rc.d/rc.local中包含“以to开始并以to结尾”的字串行;
5, 查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行;
6, 查找ifconfig命令结果中的1-255之间的整数;
7,显示/var/log/secure文件中包含“Failed”或“FAILED”的行
8,在/etc/passwd中取出默认shell为bash
9.以长格式列出/etc/目录下以ns开头、.conf结尾的文件信息
10. 高亮显示passwd文件中冒号,及其两侧的字符
11. 配置passwd文件的用户名
12. 匹配/etc/services中开头结尾字母一样的单词。

相关文档
最新文档