Javascript 匹配精确句子和单个单词的正则表达式?

Javascript 匹配精确句子和单个单词的正则表达式?,javascript,regex,Javascript,Regex,我有一个输入字段,用户可以在其中搜索一个单词或句子 让我们在一块文本中说: 段落是论文的基石。许多学生用长度来定义段落:段落至少由五个句子组成,一个段落有半页长,等等。但实际上,句子之间思想的统一性和连贯性才是段落的组成部分。段落被定义为“组成一个单位的一组句子或一个句子”(Lunsford和Connors 116)。长度和外观并不决定文章中的某一部分是否为段落。例如,在某些文体中,特别是新闻文体中,一个段落可能只有一句话长。说到底,段落是支持一个主要思想的一个句子或一组句子。在本讲义中,我们将

我有一个输入字段,用户可以在其中搜索一个单词或句子

让我们在一块文本中说:

段落是论文的基石。许多学生用长度来定义段落:段落至少由五个句子组成,一个段落有半页长,等等。但实际上,句子之间思想的统一性和连贯性才是段落的组成部分。段落被定义为“组成一个单位的一组句子或一个句子”(Lunsford和Connors 116)。长度和外观并不决定文章中的某一部分是否为段落。例如,在某些文体中,特别是新闻文体中,一个段落可能只有一句话长。说到底,段落是支持一个主要思想的一个句子或一组句子。在本讲义中,我们将其称为“控制思想”,因为它控制着本段其余部分的内容

作为一个用户,我输入
学生定义段落
。我希望正则表达式能够找到
学生将段落定义为句子,以及
学生
定义
段落

预期 段落是论文的基石。许多学生根据长度定义段落:段落至少由五个句子组成,段落至少有半页长,等等。但实际上,句子之间思想的统一性和连贯性才是段落的组成部分。段落被定义为“组成一个单位的一组句子或一个句子”(Lunsford和Connors 116)。长度和外观并不决定论文中的某一部分是否为段落。例如,在某些写作风格中,特别是新闻风格中,一段可能只有一句话长。归根结底,段落是支持一个主要思想的一个句子或一组句子。在本讲义中,我们将其称为“控制思想”,因为它控制着段落其余部分的内容

到目前为止,我已经尝试使用
/students(.*)define?paragration/gmi
,并将它们放在单独的并列结构中。我被告知要做一个以上的正则表达式搜索,但这将导致长时间运行。想知道是否有办法定义正则表达式搜索


还尝试了
/students(?define)(*)段落/gmi
,但如果没有端点对匹配进行分组,则不会返回单个。您将需要构造一个正则表达式,该正则表达式包含用户的输入,除此之外,还需要按空格分割查询,并使用其他标记作为备选标记,以便可以单独匹配。除此之外,正如我所看到的,您也希望匹配单数版本,因此您需要通过将
students
更改为
students?
来将最后的
s
设置为可选,或者您可能需要根据语言中可用的不同类型的单词进行更多操作。对于给定的示例搜索查询
学生定义段落
需要搜索的正则表达式如下:

students? define paragraphs?|students?|define|paragraphs?

这里有一个函数,你可以用它来生成正则表达式,就像我上面提到的一样

函数createRegex(str){
var newStr=str.replace(/s(?(+)|$)/g,'s?$1');
var arr=str.split(+/+/g);
适用于(arr的s){
newStr=newStr.concat(“|”).concat(s.replace(/s$/g,'s?);
}
返回新闻TR;
}

log(createRegex(“学生定义段落”)段落时,您希望如何匹配
段落
?更极端的例子是,当您的查询包含
地毯
,或者当您的查询包含
javascript
?;)时,您希望如何匹配
car
也许能帮到你。对不起,雷扎。我想把准确的句子和单词的每一次出现都匹配起来。我在考虑我自己的索引递归函数,但我想看看正则表达式是否能帮上忙。因为在用空格分割句子后,我尝试使用array.prototype.forEach循环句子。