[英]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.