我想編寫一個正則表達式,它與逗號分隔列表中給出的數值(非範圍)列表匹配,允許範圍允許。空是不允許的。正則表達式從逗號分隔的整數列表中排除範圍
對於前: 列表:1,5-10,20,30,40,50-60
所需的輸出:
1,20,30,40
我想正則表達式: (\ d +)(?!((\ d +) - (\ d +)))和一些變化。 前瞻否定似乎否定了第一個字符而不是整個組。
任何幫助表示讚賞。提前致謝。
我想編寫一個正則表達式,它與逗號分隔列表中給出的數值(非範圍)列表匹配,允許範圍允許。空是不允許的。正則表達式從逗號分隔的整數列表中排除範圍
對於前: 列表:1,5-10,20,30,40,50-60
所需的輸出:
1,20,30,40
我想正則表達式: (\ d +)(?!((\ d +) - (\ d +)))和一些變化。 前瞻否定似乎否定了第一個字符而不是整個組。
任何幫助表示讚賞。提前致謝。
你可以試試下面的正則表達式您的問題:
(?<!-)([1-9][0-9]*)((?=,)|$)
(?<!-) - Negative lookbehind which checks `-` not preceding number
([1-9][0-9]*) - getting number
((?=,)|$) - Or with Positive lookahead and end of input
- Positive lookahead checks `,` is follwed by number
- $ checks end of input
您需要使用negative look-behind和positive look-ahead斷言
(?<!-|\d)\d+(?=,|$)
細節
(?<!-|\d)
向後看,以檢查由-
或digit
\d+
比賽中位數任何情況下不前(?=,|$)
前瞻的,
或結束串對於輸入'1,5-10,20,300,40,50-60,70'70將被你的正則表達式拋棄。所以,也很好地包括這種情況。 –
@AkashKC啊,我的壞...錯過了。感謝您指出:-) – m87
爲什麼這必須是一個單一的正則表達式? –
你的編程語言是什麼? – MahdiY
這只是一個只有正則表達式支持的工具。 –