在Google電子表格中有數據庫。有很多獨特的單元格包含多個電子郵件。 我試圖使用=Regexextract(E2;"[A-z0-9._%+-][email protected][A-z0-9.-]+\.[A-z]{2,4}")
來提取它們,但它僅提取列表中的第一封電子郵件。Google電子表格中的Regexextract問題
這裏是片的截圖:
關於如何做到這一點,以提取所有的人任何線索?
在Google電子表格中有數據庫。有很多獨特的單元格包含多個電子郵件。 我試圖使用=Regexextract(E2;"[A-z0-9._%+-][email protected][A-z0-9.-]+\.[A-z]{2,4}")
來提取它們,但它僅提取列表中的第一封電子郵件。Google電子表格中的Regexextract問題
這裏是片的截圖:
關於如何做到這一點,以提取所有的人任何線索?
看起來像regexextract
無法提取重複的匹配項。
這裏是一個解決方法:
=arrayformula(iferror(REGEXEXTRACT(split(REGEXREPLACE(A1,"\s+",";"),";"),"(\[email protected]\w+\.\w+)")))
其中
REGEXREPLACE(A1,"\s+",";")
替換所有位(包括換行符)用;split(REGEXREPLACE(...),";")
將其轉換爲一個數組REGEXEXTRACT(split(...),(\[email protected]\w+\.\w+)")
提取電子郵件地址iferror(REGEXEXTRACT(...))
回報什麼,如果沒有匹配arrayformula(iferror(...))
確保iferror(REGEXEXTRACT(...))
可以通過split()
您處理創建數組沒有指定如何顯示結果。如果你想有一個逗號分隔的列表,請join(",", result)
如果數據一致看起來像你顯示的例子 - 最簡單的是:
=SPLIT(A1,CHAR(10))
這有效地打出使用換行符作爲分隔符的所有電子郵件。
如果你還是想用正則表達式,可以動態地嘗試這種創建基於電子郵件的細胞數量捕捉組:
=REGEXEXTRACT(A1,REPT("\n?(\[email protected]\w+\.\w+)",COUNTA(SPLIT(A1,"@"))-1))
嘗試REGEXREPLACE
「用不同的替換文本字符串的一部分使用正則表達式」
=REGEXREPLACE(E2;"([A-z0-9._%+-][email protected][A-z0-9.-]+\.[A-z]{2,4})";"$1")
文本字符串,其中:
():
捕獲組
$1:
與子模式拍攝的內容替換
只返回相同的字符串,它根本不會分割出電子郵件地址 –
看到我的回答如下 - 這有效地提取所有這些 –
的這個問題是跨發佈到其他網站:[1]。 http://es.stackoverflow.com/q/3496/65,[2]。 https://productforums.google.com/forum/#!topic/docs-es/vgnWpwFT5g4。正如在1中提到的那樣,交叉本身並不壞,但這應該作爲對其他人的禮貌來提及,特別是當問題的內容是其他帖子的重複/翻譯時。 –
我下調了這個問題,因爲在[2]中有一個後續帖子,其中OP表示電子郵件地址被包含在文本塊中,並且這篇文章中包含的圖片沒有顯示。 –