我有一个清单:
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
开头的所有字符串。任何帮助将不胜感激。
答案 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++;
}