python 3中的精确字符串匹配

时间:2015-09-12 22:42:16

标签: python regex

我有一个清单:

listy = ['{eth0 blah', '{eth1 blah blah', '{eth2 blah blah', '{eth2.1 blah blah', '{eth2.2 blah blah', '{wl0 blah blah', '{wl0.1 blah blah', '{wl1 blah blah', '{wl1.1 blah blah']

尝试查找可以找到与'eth2'完全匹配的正则表达式,我不希望匹配将'eth2.1' and eth2.2返回为真

这是我已经

的代码
    listy = ['{eth0 blah', '{eth1 blah blah', '{eth2 blah blah', '{eth2.1 blah blah', '{eth2.2 blah blah', '{wl0 blah blah', '{wl0.1 blah blah', '{wl1 blah blah', '{wl1.1 blah blah

        for i in listy:
            if re.match(r'eth2\b',i):
            #{do something}             
            print('found')
        else:
            #{do something else}     
            print('not found')

遗憾的是,此代码会查找以eth2开头的所有字符串。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

\b也匹配点字符,使用空格代替它:

for elem in listy:
    if re.search('eth2 ', elem):
        print('found')
    else:
        print('not found')

如果您要搜索像eth2这样的简单子字符串,则不需要正则表达式,可以使用find方法:

for elem in listy:
    if elem.find('eth2 ') != -1:
        print('found')
    else:
        print('not found')

答案 1 :(得分:0)

你不需要正则表达式。

int main()
{
 unsigned int Line = 0;
 int ch;
 FILE *My_file;
 char command;                              
 //the command being entered

 do
 {
  printf("Command: ");
  scanf("%s",&command);
  if (command=='l'||command=='L')           
  //loads file name to 'memory'
  {
   printf("load file name: "); 
   scanf(" %s",memory);
   My_file = fopen(memory,"r"); 
   while (EOF != (ch=getc(My_file)))
   {
    if ( ch == '\n' )
     Line++;
   }