python - 如何检查字符串是否仅包含英文字符,末尾有感叹号?
问题描述
例如,“你好!!” 应该返回 true,而 "45!!","!!ok" 应该返回 false。它应该返回 true 的唯一情况是字符串包含最后带有 0 个或多个感叹号的英文字符 (az)。
以下是我使用迭代方法的解决方案。但是,我想知道一些代码行更少的干净方法(也许通过使用一些 Python 库)。
def fun(str):
i=-1
for i in range(0,len(str)):
if str[i]=='!':
break
elif (str[i]>='a' and str[i]<='z'):
continue
else:
return 0
while i<len(str):
if(str[i]!='!'):
return 0
i+=1
return 1
print(fun("hello!!"))
解决方案
正则表达式可以在这里为您提供帮助。您在这里寻找的正则表达式是:
^[a-z]+!*$
这将允许一个或多个英文字母(小写,如果您将使用^[a-zA-Z]+!*$
,也可以添加大写,或者您想在方括号内添加的任何其他字母)和零个或多个感叹号结尾这个词的。
用python代码包装它:
import re
pattern = re.compile(r'^[a-z ]+!*$')
word = pattern.search("hello!!")
print(f"Found word: {word.group()}")
推荐阅读
- javascript - 无法在 html 模式中编辑表单
- winapi - STN_CLICKED 按下了哪个静态控件?
- bash - 如果您只知道文件名的结尾,则 cygwin bash 完成
- python - rdkit:如何绘制高分辨率化学结构
- .net - Azure 云服务(经典)- 单个实例缺少根 CA / SSL 证书无法验证
- azure - Azure Key Vault - CertificateClient - import_certificate:(BadParameter)属性策略具有无效值
- ruby - 如何阻止 shift 影响数组的其他实例
- postgresql - postgres - 具有一对多连接表的单条记录
- sql - 使用 Postgres 检查字符串的相似性
- rust - 使用生命周期参数分离特征的可变借用