我的目標是使用正則表達式實現多行unicode感知的字符串清理。多行正則表達式匹配空格分隔數據後的字符串
我已經從這個表達式,它沒有回顧後開始限制:
(?<=[[:blank:]]).*
然後,我發現的方式來回顧後限制如下:
(?!.{20,})(?<=[[:blank:]]).*
它可以在某些情況下, ,但不是很穩定(link),因爲字符串長度不可預測。
也拖尾逗號是不受歡迎的,但我還沒有想出如何用正則表達式去除逗號,因爲它是不可預測的方式(請參閱測試用例)。
如何爲此任務創建適度有限的lookbehind?我使用boost(pcre)風格的正則表達式。
測試用例:
在
РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.Á.
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ 11.22 Ã.Ö
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ, 11.22 Â.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ã.Ö.
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ, 11.22 Ø.р.
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ 11.22 Ø.Á.
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ 11.22 Ø.Ö.
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ, 11.22 Ï.Á.
出
РПÑАВÂРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВЛÛÑВ ÛÑßВßДÛÑВßЛ РИÐРÛПÑÑВÛ
ВßÑÛВÂЛÛÑВ ÛÑВÂÛÑВЛß ßРßÂРÑВЛРÛÐßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
РÐÑАВПРßÛÑ ÛÑРВßР ÛÑÛÑАÑÛ
ÛÑРВÂÛÑВ ÛÑßВßДÛÑВß РÂПРÛПÑÑВÛ
ВßÑÛВДЛÛÑВ ÛÑВЛÛÑВЛß ßРßЛРÑВЛРÛЛßРВ
ÛÑВÛÑВ ÛßÛßРÑВßРÐ ßТАÛ
很抱歉,但核電站無法匹配這個表達式和任何給定的測試 –
哦,Notepadd ++做區別。它以有限的方式支持PCRE。特別是,它不支持Unicode類別,包括'L' - 請參閱'\ Pshort name,\ P {name]'[這裏]的註釋(http://docs.notepad-plus-plus.org/index.php/常用表達)。使用NPP,您可以使用'\ w'來匹配包括Unicode在內的字母數字。所以正則表達式可以被重寫爲:^(?:(?!\ d)[\ w \ s])+'。 –
對不起,但這個正則表達式不起作用。由於'^'它試圖從頭開始匹配。 –