![](/img/trans.png)
[英]regex catastrophic backtracking ; extracting words starts with capital before the specific word
[英]Regex for extracting words before punctuation's
我試圖提取出現在標點符號之前的短語,但該短語的形式為大寫單詞。
抽象代數 。 現代數學領域,它考慮將代數結構設置為具有定義的運算的集合,並將通常與實數系統關聯的代數概念擴展到其他更通用的系統,例如組,環,場,模塊和向量空間。
代數。 數學的一個分支,使用符號或字母表示變量,值或數字,然后可以使用它們表示運算和關系以及求解方程式。
代數表達式 。 數字和字母的組合,相當於語言中的短語,例如x2 + 3x-4。
解析(笛卡爾)幾何:使用坐標系以及代數和分析原理研究幾何,從而以數字方式定義幾何形狀並從該表示中提取數字信息。
歸納推理或邏輯:一種推理,涉及從一組特定事實轉變為一般結論,表示對結論的某種程度的支持,而沒有實際確保其真實性。
目前,我正在使用以下正則表達式:
(([? ])([A-Z][a-z\s]+)?([A-Z][a-z\s]+?[.:]))
我有兩個問題。
當前數據不匹配超過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.