2016-06-03 17 views
-1

전자 메일 목록에 일반 전자 메일 도메인 (회사 도메인 제외)을 일치 시키려고하고 있으며 Google 스프레드 시트에서 RegexMatch를 사용하려고합니다 (정규식 더 큰 IF 수식의 일부이지만이 부분은 특히 작동하지 않습니다.RegexMatch는 'False'를 반환하지만 Regex String은 올바른 모양을 나타냅니다.

분명히, 나는 뭔가 잘못하고 있지만, 다양한 Regex 테스트 도구에서 정규 표현식이 의도 한대로 작동합니다.

그러나 표현식이 Google 스프레드 시트 공식의 일부인 경우 인접 셀의 이메일과 일치해야하는 경우 '거짓'을 반환합니다.

내가 뭘 잘못하고 있니?

=REGEXMATCH("INDIRECT(ADDRESS(ROW(),COLUMN()-1))","(\@aol\.com)|(\@live\.com)|(\@bellsouth\.net)|(\@btinternet\.com)|(\@ntlworld\.com)|(\@virgin\.net)|(\@ymail)|(\@att\.net)|(\@hotmail\.com)|(\@sbcglobal\.net)|(\@charter\.net)|(\@virginmedia\.com)|(\@o2\.co\.uk)|(\@wanadoo\.co\.uk)|(\@rambler\.ru)|(\@comcast\.net)|(\@hotmail\.co\.uk)|(\@verizon\.net)|(\@comcast\.net)|(\@blueyonder\.co\.uk)|(\@orange\.net)|(\@bt\.com)|(\@yandex\.ru)|(\@facebook\.com)|(\@mac\.com)|(\@yahoo\.com)|(\@cox\.net)|(\@freeserve\.co\.uk)|(\@sky\.com)|(\@ya\.ru)|(\@sbcglobal\.net)|(\@gmail\.com)|(\@me\.com)|(\@yahoo\.co\.uk)|(\@earthlink\.net)|(\@live\.co\.uk)|(\@talktalk\.co\.uk)|(\@list\.ru)|(\@optonline\.net)|(\@outlook\.com)|(\@juno\.com)|(\@tiscali\.co\.uk)|(\@icloud\.com)|(\@bell\.net)|(\@gmx\.com)|(\@mail\.com)|(\@googlemail\.com)|(\@msn\.com)") 
+0

음을,이 모든 것을 시도하고 그것은 여전히 ​​작동하지 않습니다. 나는 심지어 그것을 "aol"로 축소 시켰고 여전히 일치를 얻을 수 없습니다. – James

+0

나는 그것이 정규 표현식 함수가 아니라 반드시 정규 표현식과 관련이 있다는 것을 알아 냈습니다. – James

+0

문제는 INDIRECT 함수를 인용 한 것입니다. – James

답변

0

두 가지 :

1) 간접 사용하려면, 그것은 그렇지 않으면 리터럴 문자열로 취급하고 주위에

2) 단지 메모를 인용 부호를 제거해야합니다, 그것은 외설 모든 유사 콘텐츠에 대해 캡처 그룹을 의무적으로 보유하고있는 경우 |은 이미 값을 잠재적 검색으로 간주하고 있습니다. 잠재적 인 이메일의 긴 목록이있는 경우

, 나는 보통 무엇을 어딘가에 그들 모두를 목록입니다, 당신의 REGEXMATCH 동안 그 목록을 참조하는 조인 구분 기호로 JOIN|을 사용하여 다음 열 A에 척하고 있습니다. 당신이 목록에 값을 추가 할 계획하지 않는 경우

,이 작동합니다 :

=REGEXMATCH(INDIRECT(ADDRESS(ROW(),COLUMN()-1)),join("|",$A$1:$A$48)) 

을 당신이 실제로 할 경우 당신이 지속적에 구축 할 수 동적 목록 길이를 원하는, 다시 수정할 수 있습니다 만 가능한 값의 길이의 범위를 트림 :

=REGEXMATCH(INDIRECT(ADDRESS(ROW(),COLUMN()-1)),join("|",INDIRECT("A1:A"&COUNTA(A:A)))) 

enter image description here