使用正则表达式查找字符的多次出现

Bun*_*bit 1 python regex

我使用模式pat='dd|dddd',我认为它将匹配dd或dddd.

import re
re.search(pat,'ddd')
re.search(pat,'ddddd')
Run Code Online (Sandbox Code Playgroud)

任何数量的d(s)匹配为什么会这样?

Omn*_*ity 10

你需要以某种方式锚定正则表达式.正则表达式在字符串中搜索以查找模式.所以"dd"将在偏移0,1,2,3,4,5,6的"dddddddd"中找到.

如果你想只匹配整个字符串试试^dd$.^匹配字符串的开头,$匹配结束.那么 ^(dd|dddd)$你会想要的行为.

如果您希望它仅匹配dd或dddd但在字符串中.然后你可能想要使用:[^d](dd|dddd)[^d] 哪个匹配"任何不是d的东西"然后是两个或四个ds然后"任何不是d"