比方說,我有兩個字符類[1234]
(稱之爲「純數字」)和[⓵⓶⓷⓸]
(稱之爲「時髦數字」)。我可以創建一個混合字符類,如[1234⓵⓶⓷⓸]+
(稱之爲「類數字」),匹配一個或多個純粹或時髦的數字。正則表達式匹配類似數字的字符串,但不是純數字字符串
但我想只能匹配數字字符串與至少一個時髦的數字。也就是說,匹配字符串如⓵2⓷4
,123⓸
和⓵⓶⓷⓸
,但而不是匹配像1234
這樣的純數字字符串。
你能想出一種方法來表達它作爲正則表達式嗎?
比方說,我有兩個字符類[1234]
(稱之爲「純數字」)和[⓵⓶⓷⓸]
(稱之爲「時髦數字」)。我可以創建一個混合字符類,如[1234⓵⓶⓷⓸]+
(稱之爲「類數字」),匹配一個或多個純粹或時髦的數字。正則表達式匹配類似數字的字符串,但不是純數字字符串
但我想只能匹配數字字符串與至少一個時髦的數字。也就是說,匹配字符串如⓵2⓷4
,123⓸
和⓵⓶⓷⓸
,但而不是匹配像1234
這樣的純數字字符串。
你能想出一種方法來表達它作爲正則表達式嗎?
由於我們不知道序列中的哪個位置會出現奇怪的數字,我們需要用任意大小的數字式表達式開始和結束表達式,[1234⓵⓶⓷⓸]*
。
由於需要至少一個時髦數字,我們還需要匹配至少一個需要時髦的符號,[⓵⓶⓷⓸]
。
因此,我們得到的表達式是[1234⓵⓶⓷⓸]*[⓵⓶⓷⓸][1234⓵⓶⓷⓸]*
。
這也適用,而且很簡單。我更喜歡佔有式量詞解決方案,因爲它可以防止回溯。對於較長的純字符串,由regex101氣球報告的「步數」與「* +」解決方案相比較(例如:https://regex101.com/r/KyuX8u/3)。感謝您的回答。 – David
你不能使用'\ d * \ D + \ d *'? –
開始您的模式與積極lookahead'^(?=。* [⓵⓶⓷⓸])[1234⓵⓶⓷⓸] +' – CAustin
什麼是編程語言/正則表達式庫?你是從大文本中提取子串嗎?更換? –