簡體   English   中英

正則表達式用於在標點符號之前提取單詞

[英]Regex for extracting words before punctuation's

我試圖提取出現在標點符號之前的短語,但該短語的形式為大寫單詞。

抽象代數 現代數學領域,它考慮將代數結構設置為具有定義的運算的集合,並將通常與實數系統關聯的代數概念擴展到其他更通用的系統,例如組,環,場,模塊和向量空間。

代數。 數學的一個分支,使用符號或字母表示變量,值或數字,然后可以使用它們表示運算和關系以及求解方程式。

代數表達式 數字和字母的組合,相當於語言中的短語,例如x2 + 3x-4。

解析(笛卡爾)幾何:使用坐標系以及代數和分析原理研究幾何,從而以數字方式定義幾何形狀並從該表示中提取數字信息。

歸納推理或邏輯:一種推理,涉及從一組特定事實轉變為一般結論,表示對結論的某種程度的支持,而沒有實際確保其真實性。

目前,我正在使用以下正則表達式:

(([? ])([A-Z][a-z\s]+)?([A-Z][a-z\s]+?[.:]))

我有兩個問題。

  1. 我認為這不是最佳的編寫方式。
  2. 它無法捕獲短語中包含兩個以上單詞的單詞

嘗試^[AZ][^.,:';]+

說明:

^ -行首

[AZ] -單個大寫字符

[^.,:';]+ -與.,:';不同的一個或多個字符.,:';

演示

當前數據不匹配超過1個單詞的原因之一是模式以[? ] [? ] ,它將匹配空格或問號。

您也可以省略某些捕獲組,而只使用一個。 請注意,您不必使用?使此匹配[az\\s]+?[.:]非貪心? 因為字符類不包含. :

要得到大寫的單詞,緊接着是任一個. :您可以使用:

\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)*)[.:]

說明

  • \\b字邊界
  • (捕獲組1
    • [AZ][az]+
    • (?:\\s+[AZ][az]+)*重復0+次匹配AZ和1+次Az
  • )封閉小組
  • [.:]匹配任何一個. :

正則表達式演示

如果您還想匹配用()包圍的單詞,則可以使用交替形式。

\b((?:\([A-Z][a-z]+\)|[A-Z][a-z]+)(?:\s+(?:\([A-Z][a-z]+\)|[A-Z][a-z]+))*)[.:]

正則表達式演示

暫無
暫無

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

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