1

所以基本上我想要一个程序,它只有在用户输入“我病了”或“我太酷”之类的内容时才能工作,但如果他们输入“pi am cool”这样的错字就无法工作。

这是我到目前为止所拥有的:

text = input("text here: ") 
if re.search("i am", text) is not None:
   print("correct")

所以基本上,如果有人现在输入“Pi am cool”,我只需要帮助,它会认为这是正确的。但是我不希望这样,我希望它必须完全是“我很酷”。因为我正在为一个学校项目创建一个人工智能机器人,所以我需要它,所以句子可以是“伙计,我很酷”,它会捡起它并正确打印回来,但如果输入的是“伙计,TI 太酷了” " 有一个错字,我不希望它打印出来是正确的。

4

1 回答 1

2

使用\b单词边界锚点:

if re.search(r"\bi am\b", text) is not None:

\b匹配文本中从非单词字符到单词字符的点,反之亦然,因此空格后跟字母,或字母后跟单词。

因为\b常规python 字符串中被解释为退格字符,所以您需要使用原始字符串文字 ( r'...') 或转义反斜杠 ( "\\bi am\\b")。

您可能还想在re.IGNORE搜索中添加标志以查找小写和大写文本:

if re.search(r"\bi am\b", text, re.IGNORE) is not None:

演示:

>>> re.search(r"\bi am\b", 'I am so cool!', re.I).group()
'I am'
>>> re.search(r"\bi am\b", 'WII am so cool!', re.I) is None
True
>>> re.search(r"\bi am\b", 'I ammity so cool!', re.I) is None
True
于 2013-09-06T06:44:14.350 回答