Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript正则表达式在大文本中查找首字母缩略词_Javascript_Regex - Fatal编程技术网

使用javascript正则表达式在大文本中查找首字母缩略词

使用javascript正则表达式在大文本中查找首字母缩略词,javascript,regex,Javascript,Regex,我有一篇大文章,里面有一些首字母缩略词。所有的首字母缩略词都在括号中,并用大写字母表示。在括号之前,总是有与括号中以相同字母开头的字母相同数量的单词。但是,这些单词可能不是以大写字母开头的 例: 布莱布莱雷达散射截面(RCS)布莱布莱 布莱布莱雷达散射截面(RCS)布莱布莱 我需要列出所有的缩略词。我应该如何开始?这是您可以做的: [\([A-Z]+[\)] 这就是你可以做的: [\([A-Z]+[\)] const str=“bla-bla雷达散射截面(RCS)bla-bla…(AAAA

我有一篇大文章,里面有一些首字母缩略词。所有的首字母缩略词都在括号中,并用大写字母表示。在括号之前,总是有与括号中以相同字母开头的字母相同数量的单词。但是,这些单词可能不是以大写字母开头的

例:

布莱布莱雷达散射截面(RCS)布莱布莱

布莱布莱雷达散射截面(RCS)布莱布莱


我需要列出所有的缩略词。我应该如何开始?

这是您可以做的:

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

这就是你可以做的:

[\([A-Z]+[\)]
const str=“bla-bla雷达散射截面(RCS)bla-bla…(AAAAA)堆栈溢出(SO)”,
首字母缩略词=[],
结果=str.match(/\([A-Z].*)/g).map(val=>{
首字母缩略词push(val.substr(1,val.length-2));
});
console.log(缩写)
const str=“bla-bla雷达散射截面(RCS)bla-bla…(AAAAA)堆栈溢出(SO)”,
首字母缩略词=[],
结果=str.match(/\([A-Z].*)/g).map(val=>{
首字母缩略词push(val.substr(1,val.length-2));
});

log(缩写)
这里有一种可能性。它返回一个对象,该对象的键是首字母缩略词,值是匹配的前面的单词(不尝试将它们规范化为大写)

const findAcronyms=(str)=>{
const words=str.split(/\s+/)
返回单词。reduce((all,word,i)=>{
const isCandidate=word.match(/\([A-Z]+\)/)
如果(!isCandidate){return all}
常量字母=单词分割(“”).slice(1,-1)
const acro=字母连接(“”)
如果(i-letters.length<0){return all}
if(words.slice(i-letters.length,i)
.map(s=>s[0]).join(“”)
.toLowerCase()!==acro.toLowerCase()){
全部归还
}
返回{
全部的
[acro]:单词。切片(i-字母。长度,i)。连接(“”)
}
}, {})
}
const str='bla bla雷达散射截面(RCS),但这一个(IN)不是,而这一个(ATO)是'
console.log(findAcronyms(str))/~>
// {
//雷达散射截面:“雷达散射截面”,
//ATO:“还有这个”

//}
这里有一种可能性。它返回一个对象,该对象的键是首字母缩略词,值是匹配的前面的单词(不尝试将它们规范化为大写)

const findAcronyms=(str)=>{
const words=str.split(/\s+/)
返回单词。reduce((all,word,i)=>{
const isCandidate=word.match(/\([A-Z]+\)/)
如果(!isCandidate){return all}
常量字母=单词分割(“”).slice(1,-1)
const acro=字母连接(“”)
如果(i-letters.length<0){return all}
if(words.slice(i-letters.length,i)
.map(s=>s[0]).join(“”)
.toLowerCase()!==acro.toLowerCase()){
全部归还
}
返回{
全部的
[acro]:单词。切片(i-字母。长度,i)。连接(“”)
}
}, {})
}
const str='bla bla雷达散射截面(RCS),但这一个(IN)不是,而这一个(ATO)是'
console.log(findAcronyms(str))/~>
// {
//雷达散射截面:“雷达散射截面”,
//ATO:“还有这个”

//}
这可能需要多个步骤。我认为正则表达式不能根据匹配长度向后匹配任意文本。您可以使用look behinds,但它们实际上与您要查找的文本不匹配。我可能会从
\([A-Z]+\)
开始匹配括号之间的大写字母,然后使用类似于中的答案的方法从找到它们的位置返回。这可能需要多个步骤。我认为正则表达式不能根据匹配长度向后匹配任意文本。您可以使用look behinds,但它们实际上与您要查找的文本不匹配。我可能会从
\([A-Z]+\)
开始匹配括号之间的大写字母,然后使用类似于中的答案的内容从我发现它们的位置返回。SDJS代表什么?在这里,我刚刚添加了一个示例来检查(aaa),所以我确信它只匹配()之间的A-Z,它是如此随机,可能是我更改的(AKJJHAKJA)之类的东西,但现在我很好奇这意味着什么!也许我误解了这个问题,但我认为只有首字母缩略词字符与前面的
n
单词的首字母匹配(不区分大小写)才能算数。我的意思更明确,请参见我的答案。我想这就是OP想要的,但我不确定。SDJS代表什么?在这里,我刚刚添加了一个示例来检查(aaa),所以我确信它只匹配()之间的A-Z,它是如此随机,可能是我更改的(AKJJHAKJA)之类的东西,但现在我很好奇这意味着什么!也许我误解了这个问题,但我认为只有首字母缩略词字符与前面的
n
单词的首字母匹配(不区分大小写)才能算数。我的意思更明确,请参见我的答案。我想这就是OP想要的,但我不确定。谢谢你的回复。我需要这个作为texstudio的宏。但我不知道如何从中得到答案。恐怕我在这方面帮不了什么忙。我甚至不知道是什么。谢谢你的回复。我需要这个作为texstudio的宏。但我不知道如何从中得到答案。恐怕我在这方面帮不了什么忙。我甚至不知道那是什么。