2016-06-03 8 views
-1

Ich versuche, in einer E-Mail-Liste übliche E-Mail-Domains - aber keine Unternehmensdomains - zu finden, und versuche RegexMatch in Google Tabellen zu verwenden (das Regexmatch) ist Teil einer größeren IF-Formel, aber dieser Teil funktioniert nicht.RegexMatch gibt 'False' zurück, aber Regex String sieht korrekt aus

Offensichtlich mache ich etwas falsch, aber in den verschiedenen Regex-Test-Tools funktioniert der reguläre Ausdruck wie vorgesehen.

Wenn der Ausdruck jedoch Teil der Google Tabellen-Formel ist, wird "False" zurückgegeben, wenn er mit einer E-Mail in der angrenzenden Zelle übereinstimmen sollte.

Was mache ich hier falsch?

=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

Hmm, alle diese, und es funktioniert immer noch nicht. Ich habe es sogar auf "aol" reduziert und kann immer noch kein Match bekommen. – James

+0

Ich habe herausgefunden, dass es etwas mit der indirekten Funktion zu tun hat, und nicht unbedingt die Regex. – James

+0

Das Problem sind die Zitate um die Funktion INDIREKT. – James

Antwort

0

Zwei Dinge:

1) indirekt zu verwenden, müssen Sie die Anführungszeichen um es anders entfernen sie als Zeichenkette behandelt,

2) nur eine Notiz, es isn Es ist nicht zwingend notwendig, eine Erfassungsgruppe für jede Variation zu verwenden. Die | behandelt die Werte bereits als potenzielle Übereinstimmungen.

Wenn Sie eine lange Liste von potentiellen E-Mails haben, was ich in der Regel tun Liste ist, sie alle irgendwo, können in der Spalte A vorgeben, und dann JOIN verwenden und die | als Trennzeichen verbinden diese Liste für Ihre RegExMatch zu verweisen.

Wenn Sie auf Hinzufügen von Werten zu der Liste nicht verwenden möchten, dann sollte diese Arbeit:

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

Allerdings, wenn Sie in der Tat eine dynamische Liste Länge wollen, dass Sie ständig auf dem aufbauen können, können Sie wieder ändern die Reichweite nur auf die Länge der Werte zu trimmen zur Verfügung: versuchte

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

enter image description here

Verwandte Themen