我有一个文本如下和一些词和他们的意思包括在文本中。我需要得到这些词使用Javascript正则表达式的方法。例如,如果我给予下面的文本比返回的话应该是Necessity, Lay of the land, and Mumble
。
Necessity:(名词)对某事的需要,或被需要的事物。例如:在我的工作中,电脑是必需品。
地形:(习语或动词)被考虑的事物的一般状态或状况;情况的事示例如:我们问了几个问题了解一下情况
(动词)小声地或不清楚地说,使人难以理解。例如:她咕哝了几句需要回家,然后就走了。
我已经编码如下,但它并不像预期的那样工作。
let text = `Necessity:(noun)the need for something, or something that is needed
Example: In my work, a computer is a necessity.
Lay of the land: (idiom n. Or v.)the general state or condition of affairs under consideration; the facts of a situation
Example: We asked a few questions to get the lay of the land.
Mumble:(verb) to speak quietly or in an unclear way so that the words are difficult to understand
Example: She mumbled something about needing to be home, then left.
`;
let matches = text.match(/[A-Za-z]+(?=\:\S)/g);
console.log(matches); //['Necessity', 'Mumble']
我能知道我错过了什么吗?任何帮助都将不胜感激。
5条答案
按热度按时间33qvvth11#
您可以使用此正则表达式:
RegEx Demo
RegEx细分:
^
:开始[A-Za-z]+
:匹配1个以上的英语字母(?:\s+[A-Za-z]+)*
:匹配1+个空格,后跟1+个英语字母。重复该组0次或更多次。(?=:)
:LookaheadAssert在下一个位置有:
jw5wzhpr2#
尝试此版本:
下面是对所用正则表达式模式的解释:
(
^
字符串的开头|
或(?<=\n\n)
lookbehind并在前面Assert两个换行符)
\w+
匹配单词(?: \w+)*
后跟空格和另一个单词,零次或多次(?=:)
Assert:
跟在这个或这些字后面mwyxok5s3#
我喜欢我的正则表达式尽可能短,所以这是我的看法。
细目分类:
^
置位行首\S
匹配任何非空白字符。[^:]+
匹配不是:
的所有字符一次或无限次。dxxyhpgq4#
在模式
[A-Za-z]+(?=\:\S)
中,如果有多个单词,则不匹配任何空格,并且使用(?=\:\S)
Assert右边的冒号后跟非空格字符如果应该有一个带有冒号和括号的部分跟随并使用捕获组:
说明
^
字符串开头([A-Za-z].*?)
捕获组1,尽可能匹配字符A-Za-z后跟除换行符以外的任何字符:\s*
匹配冒号和可选空格字符\([^()]*\)
与(...)
匹配请参见regex demo。
bmp9r5qi5#
您可以按照上面的方法进行操作: