我是regex新手,正在尝试在discord中创建一个“Dadbot”,它使用regex在文本频道中用“嗨,我是爸爸”来响应消息。我的问题是,它包括“im”作为一个公认的正则表达式。这本身并不坏;然而,在使用“他”一词的情况下,他接受im。我希望能够修复此正则表达式,以便: -上面写着我是 -包括后面的3个单词,在I'm之后或直到它到达句点
我不确定我写的是否正确。我用regex101.com来检查我的regex,我原来的regex是这样的怪物:“(I'm | Im | I am | Im | I am | I m)\s+([a-zA-z]+)”我使用组来捕获第二个组
我试过的东西
"(I'm|Im|I am|im|i am|i'm)\s+([a-zA-z]+)"
"\bi'?m\s+(\w+)\b"
"/\bi'?m\s+(\w+)\b/gi"
下面是第二组的代码部分
if dadCheck.search(message.content):
match = dadCheck.search(message.content).group(2)
await channel.send("Hi, " + match + ". I'm Dad. ;D")
以下是给定可接受消息的预期结果:
大家好。我叫布拉德,很酷
嗨,“帅哥”。我是爸爸
Regex是非常棒的,可以完全覆盖您的用例。上面的正则表达式查找I'm标记,然后在一个捕获组中抓取接下来的1-3个单词加上空格,供您参考。它使用的字符串
这就是我最终找到的答案
它捕获了所有的I'm(im,im,I'm,I'm)的变体,并忽略了I'am
唯一的问题是它只捕获单词循环的最后一次迭代。因此,我必须修复捕获组或用于打印捕获组的算法
相关问题 更多 >
编程相关推荐