程序員的天敵很多,其中一個(gè)就是魔法數(shù)字希坚。因?yàn)閷懲暌院蟊咂唬约阂蚕氩黄饋?lái)為什么會(huì)出現(xiàn)這些數(shù)字。
使用正則表達(dá)式捕獲組的時(shí)候吏够,程序員可能需要趴在顯示器上勾给,用一張紙擋著屏幕,從左往右數(shù)括號(hào)锅知,聚精會(huì)神好像拆彈專家在拆除核彈播急,又好像在研究python的縮進(jìn)。而且正則表達(dá)式一旦發(fā)生變化售睹,group的index也會(huì)變桩警。有潔癖的程序員不愿意忍受下面的代碼中的那個(gè)2,因?yàn)槟蔷褪悄Х〝?shù)字2谩4肥唷!
val matcher = Pattern.compile("""(中標(biāo)金額:|預(yù)算:)(\d+)元""").matcher("預(yù)算:4356元")
if (matcher.find()) {
println(matcher.group(2))
}
因此可以把捕獲組命名飞崖,然后通過(guò)名稱來(lái)引用捕獲組烂叔。這樣不管正則表達(dá)式如何千變?nèi)f化,引用的代碼不用改固歪,做到了“敵軍圍困萬(wàn)千重蒜鸡,我自巋然不動(dòng)±紊眩”正所謂逢防,他強(qiáng)由他強(qiáng),清風(fēng)拂山崗蒲讯;他橫由他橫忘朝,明月照大江。
val matcher = Pattern.compile("""(中標(biāo)金額:|預(yù)算:)(?<budget>\d+)元""").matcher("預(yù)算:4356元")
if (matcher.find()) {
println(matcher.group("budget"))
}