如何在python中使用模式在字符串中查找单词

如何在python中使用模式在字符串中查找单词,python,regex,string,Python,Regex,String,我有一个字符串列表,我想检查这个字符串中是否有特定的单词,如果是,我会将其复制到列表中。这个词必须在a={ 例如,如果我有,作为字符串: TOTO_TEST = {0x68, 0x65, 0x6c, 0x6c, 0x6f} 和作为word: TOTO 我已经试过了: if fnmatch.filter(strings, word + '* = {') 这将找不到我的字符串。仅当字符串为: TEST_TOTO = {0x68, 0x65, 0x6c, 0x6c, 0x6f} 你能告诉我我的

我有一个
字符串列表
,我想检查这个字符串中是否有特定的
单词
,如果是,我会将其复制到列表中。这个词必须在a
={

例如,如果我有,作为
字符串

TOTO_TEST = {0x68, 0x65, 0x6c, 0x6c, 0x6f}
和作为word:

TOTO
我已经试过了:

if fnmatch.filter(strings, word + '* = {')
这将找不到我的
字符串
。仅当
字符串
为:

TEST_TOTO = {0x68, 0x65, 0x6c, 0x6c, 0x6f}
你能告诉我我的火柴怎么了吗? 顺便说一句,我真的很开放的另一种方式来做这件事

import re

strings = 'TOTO_TEST = {0x68, 0x65, 0x6c, 0x6c, 0x6f}'
word = 'TOTO'

if re.search(r'\b' + word + r'(?=.*=\s*{)', strings, re.I):
    print 'yes'
您可以这样做。在这里,通过使用
lookahead
确保在单词后面的字符串中有
={

>>> import re
>>> myList = []
>>> myStr = "TOTO_TEST = {0x68, 0x65, 0x6c, 0x6c, 0x6f}"
>>> match = re.search(r"(TOTO)", myStr.split("=")[0], re.S)
>>> if match:
        myList.append(match.group(1))
>>> myList
您可以这样做。在这里,通过使用
lookahead
确保在单词后面的字符串中有
={

>>> import re
>>> myList = []
>>> myStr = "TOTO_TEST = {0x68, 0x65, 0x6c, 0x6c, 0x6f}"
>>> match = re.search(r"(TOTO)", myStr.split("=")[0], re.S)
>>> if match:
        myList.append(match.group(1))
>>> myList
输出:
[托托语]

输出:

['TOTO']

如果word==strings.partition('={')[0]简单的
就足够了吗?@anubhava对不起,我对Python有点陌生,你的意思是把它放在一个fnmatch.filter中吗?你在过滤文件名吗?fnmatch确实是用于Unix文件名匹配的,你可能想用re来代替简单的
如果word==strings.partition('={')[0]
够了吗?@anubhava抱歉,我对Python有点陌生,你的意思是把它放在fnmatch.filter中吗?你是在筛选文件名吗?fnmatch实际上是用于Unix文件名匹配的,你可能想用re来代替它。这个可以用这个吗?`={{{code>={code>
={
等等。顺便说一句,你能解释一下这个正则表达式吗,因为我对它不太精通。谢谢你的例子:“TOTO_测试={0x68,0x65,0x6c,0x6f}”“TOTO_测试={0x68,0x65,0x6c,0x6f}”“TOTO_测试={0x68,0x65,0x6c,0x6c,0x6f}”“TOTO_测试={0x68,0x65,0x6c,0x6c,0x6f}”我的意思是相等符号周围的空间好的,谢谢,让我在我的应用程序上验证一下,如果一切正常,我会接受你的答案;@vks2有没有可能让
word
case-incensitive?太好了!我在一个小时内检查了它并接受了你的答案。这个可以用这个吗?`={
={/code>
={
等等。顺便说一句,你能解释一下这个正则表达式吗,因为我对它不太精通。谢谢你的例子:“TOTO_测试={0x68,0x65,0x6c,0x6f}”“TOTO_测试={0x68,0x65,0x6c,0x6f}”“TOTO_测试={0x68,0x65,0x6c,0x6c,0x6f}”“TOTO_测试={0x68,0x65,0x6c,0x6c,0x6f}”我指的是等号周围的空格好的,谢谢,让我在我的申请表上验证一下,如果一切正常,我会接受你的答案;@vks2是否可以让
word
case incensitive?太好了!我在一小时内检查并接受你的答案肯定不是我想要的,检查问题。肯定不是我想要的,检查问题斯蒂昂。