AI绘图仅供欣赏
题目
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
以下仅供参考,欢迎指正,共同探讨。
一、程序
代码如下(示例):
import re # 正则表达式re.findall()
s = input('请输入一串字符:')
char=re.findall(r'[a-zA-Z]',s)# 以列表类型返回全部能匹配的子串
num=re.findall(r'[0-9]',s)
blank=re.findall(r' ',s)
chi=re.findall(r'[\u4E00-\u9FFF]',s) # 汉字的Unicode编码范围
other = len(s)-len(char)-len(num)-len(blank)-len(chi)
print('字母',len(char),'\n数字',len(num),'\n空格',len(blank),'\n中文',len(chi),'\n其他',other)
二、结果
代码如下(示例):
请输入一串字符:ddfadfafafawASSDSA
字母 18
数字 0
空格 0
中文 0
其他 0
总结
本题需要利用到正则表达式。正则表达式(Regular Expression,通常简写为regex、regexp或RE)是一种文本模式,用于描述和匹配一系列符合某个模式(规则)的文本。
正则表达式由普通字符(例如字母和数字)以及特殊字符(称为元字符)组成。这些元字符包括字符类、预定义的匹配模式、量词和边界匹配等。正则表达式可以用来检索、替换或提取文本中符合某个模式的子串。
在编程语言中,正则表达式通常用于字符串操作,例如在Perl、Scala、PHP、C#、Java、C++、Objective-C、Swift、VBScript、Javascript、Ruby和Python等语言中都支持正则表达式的功能。
此外,正则表达式也常用于验证和格式化文本,例如检查数字格式、提取电子邮件地址、验证表单数据等。
基本概念:
字符: 正则表达式中的字符表示它们本身,例如字母、数字、标点符号等。
元字符: 元字符是具有特殊含义的字符,如 ., , +, ?, \\\\, [], (), {}, ^, $ 等。 模式: 模式是由字符、元字符和组合构成的字符串,描述了要匹配的文本模式。 基本语法: 普通字符: 大多数字符只表示它们自己,例如字符 "a" 匹配字符串中的字符 "a"。 点号 .: 匹配任意一个字符,除了换行符 \\\\n。 字符类 [...]: 匹配方括号中列举的任意一个字符。例如 [aeiou] 匹配任意一个元音字母。 取反字符类 [^...]: 匹配不在方括号中列举的任意一个字符。 元字符
: 匹配前面的字符零次或多次。
元字符 +: 匹配前面的字符一次或多次。
元字符 ?: 匹配前面的字符零次或一次。
元字符 {n}: 匹配前面的字符恰好 n 次。
元字符 {n,}: 匹配前面的字符至少 n 次。
元字符 {n,m}: 匹配前面的字符至少 n 次,但不超过 m 次。
转义字符 \\: 用于转义特殊字符,使其失去特殊含义。例如 \\. 匹配真正的句点。
开头匹配 ^: 表示匹配文本的开头。
结尾匹配 $: 表示匹配文本的结尾。
分组 ( … ): 将多个字符组合成一个整体,并对整体应用元字符。
或 |: 用于在多个模式中选择一个,类似于逻辑的 “或” 操作。
转义序列: 使用反斜杠 \\ 后面跟特定字符来表示特殊含义,如 \\d 表示任意一个数字字符。
具体学习请至CSDN知识树学习,不做累述。
例如,以下几个常用的正则表达式:
#由数字、26个英文字母或者下划线组成的字符串:
^[0-9a-zA-Z_]{1,}$
#非负整数(正整数 + 0 ):
^/d+$
#正整数:
^[0-9]*[1-9][0-9]*$
#非正整数(负整数 + 0):
^((-/d+)|(0+))$
#负整数 :
^-[0-9]*[1-9][0-9]*$