我有以下有效的正則表達式來匹配不同的excel細胞/範圍模式,形式的A1
,A1:Z12
等。
有沒有更緊湊的方式來進行比賽的第二部分?基本上,: <repeat>
我希望能夠通過以下方式完成的部分:
^ (<main_part> ':'<lookahead, keep if before an A-Z> ){1,2} $
有什麼辦法可以做到這種模式?
一種沒有捕獲組或環視的方法,使用詞邊界:
^(?:\b:?[A-Z]{1,3}[0-9]{1,10}){1,2}$
字邊界不能在字符串的開頭和冒號之間,也不能在數字和字母之間成功,但在數字和冒號之間或字符串的開頭和字母之間可以。
顯然,出於同樣的原因,也可以這樣做:
^(?:[A-Z]{1,3}[0-9]{1,10}:?\b){1,2}$
(你用這個多贏一步,耶!)
測試用例(第一種模式):
with:A2
它失敗,因為\b
在字符串的開頭和非單詞字符(冒號)之間失敗。
withA2:
它失敗,因為子模式末尾沒有冒號(在這種情況下不會重複)。
withA2:A2
模式成功。\b
成功是因為第一次它在字符串的開頭和一個字母(一個單詞字符)之間,第二次因為它在一個數字(一個單詞字符)和一個冒號(一個非單詞字符)之間。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句