首页 > 解决方案 > 如何检查字符串是否仅包含英文字符,末尾有感叹号?

问题描述

例如,“你好!!” 应该返回 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!!"))

标签: pythonstring

解决方案


正则表达式可以在这里为您提供帮助。您在这里寻找的正则表达式是:

^[a-z]+!*$

这将允许一个或多个英文字母(小写,如果您将使用^[a-zA-Z]+!*$,也可以添加大写,或者您想在方括号内添加的任何其他字母)和零个或多个感叹号结尾这个词的。

用python代码包装它:

import re
pattern = re.compile(r'^[a-z ]+!*$')
word = pattern.search("hello!!")
print(f"Found word: {word.group()}")

推荐阅读