簡體   English   中英

使用javascript正則表達式在大文本中查找首字母縮寫詞

[英]Finding acronyms in a big text using javascript regex

我有一個很大的文字,里面有一些縮寫。 所有首字母縮寫詞都用括號括起來,並用大寫字母表示。 在括號之前,總是有與括號中以相同字母開頭的字母相同數量的單詞。 但是,這些單詞可能不能以大寫字母開頭。

例如:

bla bla雷達橫截面(RCS)bla bla ...

bla bla雷達橫截面(RCS)bla bla ...

我需要列出所有首字母縮寫詞。 我應該如何開始?

這是一種可能性。 它返回一個對象,其鍵是首字母縮寫詞,值是匹配的前一個單詞(不嘗試將它們標准化為大寫形式)。

 const findAcronyms = (str) => { const words = str.split(/\\s+/) return words.reduce((all, word, i) => { const isCandidate = word.match(/\\([AZ]+\\)/) if (!isCandidate) {return all} const letters = word.split('').slice(1, -1) const acro = letters.join('') if (i - letters.length < 0) {return all} if (words.slice(i - letters.length, i) .map(s => s[0]).join('') .toLowerCase() !== acro.toLowerCase()) { return all } return { ...all, [acro]: words.slice(i - letters.length, i).join(' ') } }, {}) } const str = 'bla bla radar cross section (RCS) but this one (IN) is not And This One (ATO) is' console.log(findAcronyms(str)) //~> // { // RCS: "radar cross section", // ATO: "And This One" // } 

請注意,結果中不包含"IN" ,因為它與前面的文本不匹配。

如果您只想使用實際的首字母縮寫詞而沒有其代表的含義,則可以將return修改為一個數組,也可以僅在此結果上運行Object.keys

 const str = "bla bla radar cross section (RCS) bla bla...(aaaaaa) stack overflow (SO)", acronymes = [], result = str.match(/\\(([AZ].*?)\\)/g).map(val => { acronymes.push(val.substr(1, val.length - 2)); }); console.log(acronymes) 

這是您可以做的:

[\([A-Z]+[\)]

暫無
暫無

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

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