比如说我有这个:
import discord, asyncio, time
client = discord.Client()
@client.event
async def on_message(message):
if message.content.lower().startswith("!test"):
await client.send_message(message.channel,'test')
client.run('clienttokenhere')
我想做两件事:
1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试
2)使其成为如果用户键入! test
首先后跟空格和至少一个其他字符串字符,它将打印出
test
——例如:a)! test
不会打印出任何东西,b)! test
(
! test
后跟一个空格)不会打印出任何东西,c)!test1
不会打印出任何东西,d)!testa c
不会打印出任何东西,但是e)!test 1
将打印出test
, f)! test 123abc
将打印出test
, g)! test a
将打印出test
, and h)! test?! abc123
将打印出test
等。
我只知道“startswith”和“endswith”,就我的研究而言,没有“精确”这样的东西,我也不知道如何使它在“startswith”之后需要最少的数字字符
看起来您需要一个正则表达式,而不是startswith()。您似乎有两个相互冲突的要求:
1) 使其成为当且仅当用户准确键入<代码>时!测试和其他内容,它将在通道中打印出测试
2a)<代码>!测试不会打印任何内容
包括1但不包括2a:
import re
test_re = re.compile(r"!test( \S+)?$")
# This says: look for
# !test (optionally followed by one space followed by one or more nonspace chars) followed by EOL
#
@client.event
async def on_message(message):
if test_re.match(message.content.lower()):
await client.send_message(message.channel,'test')
包括2a,不包括1,替换此行(测试后的空格和填充物不再是可选的):
test_re = re.compile(r"!test \S+$")
使用==
运算符。
1)当接收到的字符串中只有! test
时打印测试
if message.content.lower() == '!test':
await client.send_message(message.channel,'test')
2) 打印后接字符串的测试
# If it starts with !test and a space, and the length of a list
# separated by a space containing only non-empty strings is larger than 1,
# print the string without the first word (which is !test)
if message.content.lower().startswith("!test ")
and len([x for x in message.content.lower().split(' ') if x]) > 1:
await client.send_message(message.channel, 'test ' + ' '.join(message.content.split(' ')[1:]))
我正在尝试创建一个Lucene4.10索引。我只想在索引中保存我放入文档的确切字符串,witout标记化。 我在用StandardAnalyzer。 我试图搜索术语“燃料箱容量”@en(包括引号),所以我试图省略它们,并在术语周围添加了另外几个引号,以便让lucene理解我正在搜索整个文本。 如果我打印查询,我会得到:3:“燃料箱容量en”,但我不想拆分@符号上的文本。 我认为我的第一个问题是St
我试图检查字符串是否包含完全匹配。例如: String str="这是我的字符串,具有-Policy和-p" 我怎样才能做到以下几点:
问题 你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串 解决方案 fnmatch 模块提供了两个函数—— fnmatch() 和 fnmatchcase() ,可以用来实现这样的匹配。用法如下: >>> from fnmatch import fnmatch, fnmatchcase >>> fnmatch('foo.txt',
问题内容: 我有一个oracle表,该表具有名为system_access的列,该列具有以下数据: 基于上述示例数据,我不确定我的查询仅检索与“只读”和/或“只读”的确切单词匹配的记录 我不需要具有“只读(否)”,后接空格或方括号的记录,或“只读(请参阅mgr)”,其后或接续无空格和括号的记录。 因此,根据以上示例数据,我只会返回两行,即: 如前所述,只有与字符串“ Read Only”或“ re
问题 你想要匹配两个或多个字符串。 解决方案 计算把一个字符串转换成另一个字符串所需的编辑距离或操作数。 levenshtein = (str1, str2) -> l1 = str1.length l2 = str2.length prevDist = [0..l2] nextDist = [0..l2] for i in [1..l1] by 1
问题内容: 我正在寻找一个正则表达式来匹配Java源代码中的字符串文字。 可能吗? 我的意图是用其他东西替换另一个字符串中的所有字符串。使用: 这样的事情。 问题答案: 好。那么,您想要在字符串中搜索以双引号开头和结尾的一系列字符吗? 注意非贪婪模式。