构造正则表达式模式,以便在python中仅识别单独的单词

构造正则表达式模式,以便在python中仅识别单独的单词,python,regex,Python,Regex,我有一个术语e_-learning,我想看看在我的列表中有哪些术语包括e_-learning 我应该只得到电子学习环境和学生电子学习平台作为输出 我目前的代码如下 for item in mylist: if 'e_learning' in 'machine_learning': print('yes') 然而,当我在python中使用时,我也得到了机器学习。我可以用正则表达式避免它吗?请帮帮我 您可以将re与lookback一起使用 import re myrootword

我有一个术语e_-learning,我想看看在我的列表中有哪些术语包括e_-learning

我应该只得到电子学习环境和学生电子学习平台作为输出

我目前的代码如下

for item in mylist:
   if 'e_learning' in 'machine_learning':
     print('yes')
然而,当我在python中使用时,我也得到了机器学习。我可以用正则表达式避免它吗?请帮帮我

您可以将re与lookback一起使用

import re
myrootword = 'e_learning' #target search variable
mylist = ['e_learning_environment', 'machine_learning', 'student_e_learning_platform']
new_list = [i for i in mylist if re.findall('(?<=^){}|(?<=\s){}|(?<=_){}'.format(*([myrootword]*3)), i)]

像:?\b | | | e| u学习:?| | |这样的东西可以工作。我觉得使用lookaheads有一个更聪明的解决方案/lookbehinds@PatrickHaugh不,够了。只需使用re.search并在列表中测试它的真实性。如果mystring中的“e_learning”或mystring中的“e_learning:@JohnGordon对此有效,但在许多其他随机情况下会出现误报。非常感谢。如果我想给出一个字符串,比如e_,从一个名为myrootword的变量中学习,我该如何更改这个代码?i、 e myrootword='e_learning':@JCena请查看我最近的编辑。我添加了变量myrootword来存储所需的搜索变量,并使用字符串格式将搜索查询插入正则表达式中。
import re
myrootword = 'e_learning' #target search variable
mylist = ['e_learning_environment', 'machine_learning', 'student_e_learning_platform']
new_list = [i for i in mylist if re.findall('(?<=^){}|(?<=\s){}|(?<=_){}'.format(*([myrootword]*3)), i)]
['e_learning_environment', 'student_e_learning_platform']