簡體   English   中英

在行首匹配{m,n} | {m,} | {,n} | {n}的正則表達式

[英]improving regex that matches {m,n}|{m,}|{,n}|{n} in the beginning of the line

需要一個正則表達式將與{m,n} | {m,} | {,n} | {n}(其中m和n是整數)匹配,並且在行首的符號之間具有任意數量的空格。 我想出了這個:

^({\\ s * \\ d + \\ s *,\\ s * \\ d + \\ s *} | {\\ s *,\\ s * \\ d + \\ s *} | {\\ s * \\ d + \\ s *,\\ s * } | {\\ s * \\ d + \\ s *})

雖然它確實有效,但我很好奇是否有一種方法可以縮短它。 感謝您的輸入。

更新:馬克提出了一個極好的解決方案:^ \\ {(\\ s * \\ d + \\ s *(,(\\ s * \\ d + \\ s *)?)?,, \\ s * \\ d + \\ s *)\\}

您至少應該能夠做到這一點(為簡潔起見,現在忽略空格):

"^\\{(\\d+(,(\\d+)?)?|,\\d+)\\}"

在第一個替代方案中,這捕獲了{,n}以外的所有情況。

在以下位置添加空格:

"^\\{\\s*(\\d+(\\s*,(\\s*\\d+)?)?|,\\s*\\d+)\\s*\\}"

可能看起來不短,但是請記住,我確實在為Java進行了轉義,而您肯定不是。

首先,它們都以{\\s*開頭並以\\s*}結尾。 因此,您至少可以“將其重構:

^{\\s*(\\d+\\s*,\\s*\\d+|,\\s*\\d+|\\d+\\s*,|\\d+)\\s*}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM