Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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,我有一个将近100页的大文件,每行开头都有一个名字。我在regex中使用JavaScript,问题是有些名字包含两个单词,比如Alby的妈妈。 我正在搜索的文本如下所示: Alby: What is wrong? Alby’s Mom: Nothing child. Rick: Just tell him the truth! Alby: Yeah. I think I deserve to know! Little Blue Flower: (whisper) Don’t. Alb

我有一个将近100页的大文件,每行开头都有一个名字。我在regex中使用JavaScript,问题是有些名字包含两个单词,比如Alby的妈妈。 我正在搜索的文本如下所示:

 Alby: What is wrong?
 Alby’s Mom: Nothing child.
 Rick: Just tell him the truth!
 Alby: Yeah. I think I deserve to know!
 Little Blue Flower: (whisper) Don’t.
Alby:
Alby's Mom:
Rick:
Alby:
Little Blue Flower:
我需要选择所有的名字,大约10个,所以可以写下每个名字,然后列一个清单,如下所示:

 Alby: What is wrong?
 Alby’s Mom: Nothing child.
 Rick: Just tell him the truth!
 Alby: Yeah. I think I deserve to know!
 Little Blue Flower: (whisper) Don’t.
Alby:
Alby's Mom:
Rick:
Alby:
Little Blue Flower:
我差一点就明白了

(\bAlby\b|\bAlby's Mom\b|\bRick\b etc.....)+
但问题是,这不包括中间有空格的名字,比如阿尔比的妈妈或小蓝花

我也不知道如何在名称的末尾添加:因为在名称之后添加到代码中会导致像Alby这样一直工作的名称突然消失。我希望它有意义。

试试这个:^\s*[^:\n]+:

解释:

Use可以使用/^.+?:/gm


示例

若要查找可以在多行后跟冒号的名称,可以在名称之间\s+匹配一个或多个空格字符

您可以使用替换,但Alby的妈妈与\bAlby的妈妈\b不匹配的原因是字符“和”不同。如果要将两者匹配,可以使用字符类[“”]

如果要匹配,可以在替换后添加冒号:

const regex=/\b?:Alby?:[''s\s+Mom?| Rick | Little\s+Blue\s+Flower:/g; const str=`Alby:怎么了? 阿尔比的妈妈:没什么,孩子。 瑞克:告诉他真相吧! 阿尔比:是的。我想我应该知道! 小蓝花:小声说不要。 阿尔比氏 妈妈: 这是一个小测试 蓝色花朵:测试`; 让m; 而m=regex.execstr!==空的{ 如果m.index==regex.lastIndex{ regex.lastIndex++; } console.logm[0];
}将每行拆分为:,然后取[0]元素如何?您使用的是什么语言/工具/库?就像@RaunaqJain所说的,只需将数组拆分为:,然后取第一个0索引。这应该不难。用你正在使用的语言更新问题,我将向你展示如何使用regex regex是一个概念,不是一种编程语言、工具或库。我试过了,它几乎工作得很好,但我没有在每行的开头加上一个名称和:毕竟,有时它会继续到第二行,在这种情况下,它会搜索该行中的所有内容,然后搜索名称和:那是在下一行。@MichalŠobr你在每行的开头是一个名称。我更新了regexp以跳过行的结尾。如果它仍然不能像预期的那样工作,那么对于那些否决它的人来说,一个完整的输入将是受欢迎的,你们能简单地解释一下为什么吗?无缘无故地被否决是一种无益和缺乏动力的行为,可能是因为+是贪婪的,它可能与这样的事情不起作用:阿尔比:鲍勃说:查理在这里。注意:我没有用downvoteUse[^:]代替。我明白了。我真的很欣赏你的解释所以,在这种情况下,我甚至可以使用非贪婪操作符?。更新了!