我有一系列我試圖捕捉的詞。
我有以下問題:
- 字串以一組固定的單詞結尾
- 字串由多少個單詞組成并沒有明確定義。但是,它應該捕獲所有以大寫字母開頭的單詞(德語)。因此,左錨應該是第一個以小寫開頭的單詞。
示例(粗體是我試圖捕捉的內容):
我喜歡蘋果香蕉和汽車。
杰西卡說,蓋房子可能會咸 硬。
這是我到目前為止嘗試過的正則運算式,它僅在“非捕獲”字串不包含任何大寫單詞時才有效:
/(?:[a-z??ü]*)([\p{L} ().&] [Cars|Hard])/gu
uj5u.com熱心網友回復:
您可以使用允許德語大寫字符的大寫字符開始匹配,然后可選擇重復匹配以大寫字符或“特殊字符”開頭的單詞。
然后以匹配 Hard 或 Cars 的交替結束比賽。
(?<!\S)[A-Z??ü?][a-zA-Z??ü???ü?]*(?:\s (?:[A-Z??ü?][a-zA-Z??ü???ü?]*|[ ()&]))*\s (?:Hard|Cars)\b
解釋
(?<!\S)在左側斷言空白邊界以防止在非空白字符之后開始匹配[A-Z??ü?][a-zA-Z??ü???ü?]*匹配以大寫字符開頭的單詞(?:非捕獲組作為一個整體匹配\s匹配 1 個空格字符(?:非捕獲組[A-Z??ü?][a-zA-Z??ü???ü?]*匹配以大寫開頭的單詞|或者[ ()&]匹配“特殊”字符之一
)關閉非捕獲組
)*關閉非捕獲組并選擇性地重復它\s匹配 1 個空格字符(?:Hard|Cars)匹配其中一個選項\b防止部分單詞匹配的單詞邊界
查看正則運算式演示。
uj5u.com熱心網友回復:
用于\p{Lu}大寫字母:
(?:[\p{Lu} ()&][\p{L} ()&]* ) (?:Cars|Hard)
查看現場演示(顯示匹配的變音字母和 ?)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466800.html
標籤:正则表达式
