sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  


69 ~ 76 라인을 살펴보면
그림에서 보듯이 첫번째 문장과 두번째 문장은 육안으로 보기에 동일한 문자열을 가진다.
하지만 테스트케이스에 적힌대로 첫번째는 Patter매칭시 false를 리턴하고 두번째는 true를 리턴한다.
이것을 콘솔에 출력한 결과값 역시 서로 상이하다.
과연 무슨 차이가 있는 걸까?

음... char배열로 출력해 보니 앞에 무언가 있었다.

첫번째 문장의 ? 가 궁금해졌다. (너의 정체는 뭐냐?)
앞에 캐릭터만 잘라다가 해쉬코드로 출력해 봤다.

  Character sChar = new Character(source.charAt(0));
  System.out.println(sChar+":"+sChar.hashCode());
  결과 => ?:65279

65279? 이게 머지?
바로 BOM이었다.

당연히 제거해줘야 한다.