簡體   English   中英

匹配精確句子和單個單詞的正則表達式?

[英]Regex that matches exact sentence and individual words?

我有一個輸入字段,用戶可以在其中搜索一個單詞或一個句子。

讓我們在一段文本中說:

段落是論文的基石。 許多學生根據長度來定義段落:一個段落是一組至少五個句子,一個段落是半頁長等。但實際上,句子之間思想的統一性和連貫性才構成了一個段落。 段落被定義為“一組句子或形成一個單元的單個句子”(Lunsford and Connors 116)。 長度和外觀並不能決定論文中的一個部分是否是一個段落。 例如,在某些寫作風格中,尤其是新聞風格,一個段落可能只有一個句子長。 最終,段落是支持一個主要思想的一個句子或一組句子。 在本講義中,我們將其稱為“控制思想”,因為它控制着段落其余部分發生的事情。

作為用戶,我輸入students define paragraph 我希望正則表達式找到students define paragraph為句子, students define paragraph

預期的

段落是論文的基石。 許多學生根據長度來定義段落:一個段落是一組至少五個句子,一個段落是半頁長等。但實際上,句子之間思想的統一性和連貫性才構成了一個段落 段落被定義為“一組句子或形成一個單元的單個句子”(Lunsford and Connors 116)。 長度和外觀並不能決定論文中的一個部分是否是一個段落 例如,在某些寫作風格中,尤其是新聞風格,一個段落可能只有一個句子長。 最終,段落是支持一個主要思想的一個句子或一組句子。 在本講義中,我們將其稱為“控制思想”,因為它控制着段落其余部分發生的事情。

到目前為止,我已經嘗試使用/students(.*?)define?paragraph/gmi並將它們放在單獨的 parathesis 中。 我被告知要做不止一個正則表達式搜索,但這會導致很長的運行時間。 想知道是否有辦法定義正則表達式搜索。

也試過/students(?define)(.*?)paragraph/gmi但是如果沒有端點來分組匹配,這不會返回個人。

您將需要構建一個包含用戶輸入的正則表達式,除此之外,按空間拆分查詢並使用其他標記作為替代,以便它們可以單獨匹配。 除此之外,正如我所看到的,您也想匹配單數版本,因此您需要通過將students更改為students?來使最后一個s成為可選students? 或者您可能需要根據該語言中可用的不同類型的單詞進行更多工作。 對於您給定的示例搜索查詢, students define paragraphs ,您需要搜索的正則表達式是這樣的,

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

演示

這是一個函數,您可以使用它來生成我上面提到的正則表達式,

 function createRegex(str) { var newStr = str.replace(/s(?:( +)|$)/g,'s?$1'); var arr = str.split(/ +/g); for(s of arr) { newStr = newStr.concat('|').concat(s.replace(/s$/g,'s?')); } return newStr; } console.log(createRegex('students define paragraphs'));

暫無
暫無

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

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