在Python中有很多内置函数可以对字符串进行操作。如len()、ord()、chr()、max()、min()、bin()、oct()、hex()等。
由于字符串属于不可变序列类型,常用方法中涉及到返回字符串的都是新字符串,原有字符串对象不变
正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。
/^1[34578][0-9]$/
准备阅读天书:
有限自动机是一种最基本、最简单的自动机模型。它由 一个有限的状态集合、一个有限的输入符号集合、状态转移函数、初始状态和终止状态集合组成。
确定性有限自动机(DFA) 在每个状态下对给定的输入符号只有一个确定的转移路径。即对于任意 q ∈ Q q \in Q q∈Q和 a ∈ Σ a \in \Sigma a∈Σ,都有 δ ( q , a ) \delta(q, a) δ(q,a)是一个单一状态。
非确定性有限自动机(NFA) 则允许在某个状态下对于同一输入符号有多个转移路径,需要并行 模拟所有可能路径。它的转移函数映射到一个状态集合,即 δ : Q × Σ → P ( Q ) \delta: Q \times \Sigma \rightarrow \mathcal{P}(Q) δ:Q×Σ→P(Q),其中 P ( Q ) \mathcal{P}(Q) P(Q)是 Q Q Q的幂集。此外,NFA可以有一个初始状态集合,而不是单个初始状态。
下推自动机是一种带有堆栈存储的扩展有限自动机模型。它可以通过推入和弹出堆栈中的元素来记录和追踪更多信息。
线性有界自动机是一种受存储空间的非确定性图灵机变体。它的存储空间受输入长度的线性约束,但在这个内可以按照任意方式移动读写头。LBA可以识别和接受所有的上下文有关语言。
图灵机是一种理论计算模型,由一个无限长度的磁带、一个读写头和一个有限状态控制器组成。根据当前状态和磁带上的符号,它可以执行写入、移动读写头以及改变内部状态等操作。
图灵机被认为是最通用的计算模型,所有可计算的函数理论上都可以由某个图灵机来计算。这一性质被称为"图灵完备"。
aba|ba*给定列表 x = [ “ 13915556234 ” , “ 13025621456 ” , “ 153255124 ” , “ 15202362459 ” ] x=[“13915556234”,“13025621456”,“153255124”,“15202362459”] x=[“13915556234”,“13025621456”,“153255124”,“15202362459”],检查列表中的元素是否为移动手机号码,这里移动手机号码的规则是:手机号码共11位数字;以13开头,后面跟4、5、6、7、8、9中的某一个;或者以15开头,后面跟0、1、2、8、9中的某一个。
import re
pattern = r'^(13[4-9]\d{8}|15[012]\d{8})$'
x = ["13915556234", "13025621456", "153255124", "15202362459"]
for phone in x:
if re.match(pattern, phone):
print(f"{phone} 是移动手机号码")
else:
print(f"{phone} 不是移动手机号码")
import re
pattern = r'(13[4-9]\d{8}|15[012]\d{8})'
x = ["13915556234", "13025621456", "153255124", "15202362459"]
for phone in x:
if re.findall(pattern, phone):
print(f"{phone} 是移动手机号码")
else:
print(f"{phone} 不是移动手机号码")
def is_mobile_phone(phone):
transitions = {
'q0': lambda c: 'q1' if c == '1' else 'q5',
'q1': lambda c: 'q2' if c == '3' else ('q3' if c == '5' else 'q5'),
'q2': lambda c: 'q6' if '4' <= c <= '9' and len(phone) == 11 and phone[-8:].isdigit() else 'q5',
'q3': lambda c: 'q7' if c in '012' and len(phone) == 11 and phone[-8:].isdigit() else 'q5',
'q5': lambda c: 'q5',
'q6': lambda c: 'q6',
'q7': lambda c: 'q7'
}
state = 'q0'
for char in phone:
state = transitions[state](char)
return state in ('q6', 'q7')
x = ["13915556234", "13025621456", "153255124", "15202362459"]
for phone in x:
if is_mobile_phone(phone):
print(f"{phone} 是移动手机号码")
else:
print(f"{phone} 不是移动手机号码")
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务