簡體   English   中英

如何在 Google Docs 電子表格中使用 regexextract 函數來獲取字符串的“所有”出現?

[英]How can I use regexextract function in Google Docs spreadsheets to get "all" occurrences of a string?

我的文本字符串在單元格 D2 中:

Decision, ERC Case No. 2009-094 MC, In the Matter of the Application for Authority to Secure Loan from the National Electrification Administration (NEA), with Prayer for Issuance of Provisional Authority, Dinagat Island Electric Cooperative, Inc. (DIELCO) applicant(12/29/2011)

這個功能:

=regexextract(D2,"\([A-Z]*\)")

會抓住(NEA)但不會抓住(DIELCO)

我希望它同時提取(NEA)和(DIELCO)

您可以使用捕獲組,這將導致regexextract()返回一個數組。 您可以將其用作單元格結果,在這種情況下,您將獲得一系列結果,或者您可以將數組提供給另一個函數以將其重新格式化為您的目的。 例如:

regexextract( "abracadabra" ; "(bra).*(bra)" )

將返回數組:

{bra,bra}

另一種方法是使用regexreplace() 這樣做的優點是替換是全局的(如s/pattern/replacement/g ),因此您無需事先知道結果的數量。 例如:

regexreplace( "aBRAcadaBRA" ; "[a-z]+" ; "..." )

將返回字符串:

...BRA...BRA

這里有兩個解決方案,一個使用作者示例中的特定術語,另一個擴展作者的樣本正則表達式模式,似乎與所有ALLCAPS術語相匹配。 我不確定哪個是想要的,所以我給了兩個。

(將文本塊放在A1中)

ALLCAPS中所有單詞的通用解決方案

=regexreplace(regexreplace(REGEXREPLACE(A1,"\b\w[^A-Z]*\b","|"),"\W+","|"),"^\||\|$","")

結果:

ERC|MC|NEA|DIELCO

注意:工作首當其沖的是CAPITALIZED公式,小寫函數僅用於清理。

如果你想要空間分離,公式有點簡單:

=trim(regexreplace(REGEXREPLACE(A1,"\b\w[^A-Z]*\b"," "),"\W+"," "))

結果:

ERC MC NEA DIELCO

(我喜歡在谷歌電子表格中使用正則表達式的一種方法是從另一個單元格中讀取正則表達式模式,這樣我就可以更改它而無需使用該模式編輯或重新粘貼到所有單元格中。這看起來如此:

單元格A1:

Block of text

Cell B1(無引號):

\b\w[^A-Z]*\b

公式,在任何細胞中:

=trim(regexreplace(REGEXREPLACE(A1,B$1," "),"\W+"," "))

通過將其錨定到B $ 1,我可以立即填充所有行,並且引用不會增加。)


上一個答案:

選定條款的特定解決方案(ERC,DIELCO)

=regexreplace(join("|",IF(REGEXMATCH(A1,"ERC"),"ERC",""),IF(REGEXMATCH(A1,"DIELCO"),"DIELCO","")),"(^\||\|$)","")

結果:

ERC|DIELCO

和以前一樣,工作首當其沖的是CAPITALIZED公式,小寫函數只是用於清理。

該公式將在文本塊中找到任何ERC或DIELCO或兩者。 初始順序無關緊要,但輸出將始終為ERC,然后是DIELCO(外觀順序丟失)。 這解決了使用“(bra)。*(bra)”之前的答案的缺點,因為孤立的ERC或DIELCO仍然可以匹配。

這也有一個更簡單的空間分隔形式:

=trim(join(" ",IF(REGEXMATCH(A1,"ERC"),"ERC",""),IF(REGEXMATCH(A1,"DIELCO"),"DIELCO","")))

結果:

ERC DIELCO

請試試:

=SPLIT(regexreplace(A1 ; "(?s)(.)?\(([A-Z]+)\)|(.)" ; "🧸$2");"🧸")

或者

=REGEXEXTRACT(A1;"\Q"&REGEXREPLACE(A1;"\([A-Z]+\)";"\\E(.*)\\Q")&"\E")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM