で、EUCのヘキサでみると「面電」→CC CC C5 C5
「北斗」→CB CC C5 CD
2バイト文字の2バイト目と次の文字の1バイト目で引っかかってるようです。
検索するプログラムのほうがマルチバイト文字を意識して作られてないと
こういうことになっちゃうんでしょうね。
さらに検索してる文字が一文字なのでこういうことになる可能性が
高まったとも思われます。
例えばある文字列を「A or B」で検索するアルゴリズムを考えてみます(正規表現では(A|B)ですか)。
文字列をスキャンしていき、「A」または「B」にたどりつけばそこで検索終了です。特に難しいことはないでしょう。
が、「A and B」になるとどうでしょう。
「A」にたどりついても次に「B」が存在するか最後(ってどこ?)まで検索しないと答えは出ないわけです。
(もちろん「B」を先に見つけても同様です)