假設後置代碼的格式爲A0A 0AA或A0 0AA,其中A是任意字母,0是任意數字我已經編寫了以下sed腳本以在網頁中搜索郵政編碼。sed中的後置代碼過濾器
s/\(([[:alnum:]]\{2,4\})\) \(([[:alnum:]]\{3\})\)/\1 \2/p
要存儲在所述第一區域和所述第二區域中的第二部分(0AA)的第一部分(A0A)。然後打印出發現的內容。但是運行這個目前沒有找到任何郵編。
任何想法?謝謝
假設後置代碼的格式爲A0A 0AA或A0 0AA,其中A是任意字母,0是任意數字我已經編寫了以下sed腳本以在網頁中搜索郵政編碼。sed中的後置代碼過濾器
s/\(([[:alnum:]]\{2,4\})\) \(([[:alnum:]]\{3\})\)/\1 \2/p
要存儲在所述第一區域和所述第二區域中的第二部分(0AA)的第一部分(A0A)。然後打印出發現的內容。但是運行這個目前沒有找到任何郵編。
任何想法?謝謝
很難找到你的正則表達式正確。
您需要,以最低的
但是,這仍然不適合y滿足您的要求。它將匹配無效模式。你真正需要做的是
我沒有給出具體的例子,說明如何做到這一點,因爲你要求「任何想法」。我假設你想在正確的指針下嘗試修復這個問題。
很高興你拿起了這個事實,我想盡可能地爲自己努力工作,最好的方式來學習我發現。在這些指針之後,我以 s/\(。* \)\([[:alpha:]] \ {1,2 \} \)\([[:digit:]] \ {1,2 \ } [[:阿爾法:]] \ {,1 \} \)[[:空間:]] \([[:數字:]] \)\([[:阿爾法:]] \ {2 \} \) \(。* \)/ \ 2 \ 3 \ 4 \ 5 謝謝。 – BradStevenson
看起來你的括號裏有一些問題。對我來說,以下工作:
$ sed -n 's/.*\b\([[:alnum:]]\{2,3\}\) \([[:alnum:]]\{3\}\)\b.*/\1 \2/p' <<< "here is a postcode: A0A 0AA. some more text"
A0A 0AA
您還修復了突出顯示的{2,4}問題。你應該在答案中指出這一點,否則OP可能沒有注意到,仍然被卡住。你還沒有解決正則表達式會產生很多錯誤匹配的問題,但那不是我們被要求修復的問題,所以這很公平。 – itsbruce
我知道你問的有效郵政編碼的一個子集,但我希望這個解決方案爲英國的郵政編碼會有所幫助。我想接近這樣的問題:
望着format for post-codes,格式是
最後一部分的正則表達式很容易:[0-9][A-Z]{2}
第一部分是竅門。我分裂問題分爲兩個:
[A-Z]{1,2}[0-9]{1,2}
相匹配,即,一個或兩個字母后面跟着一個或兩個數字;[A-Z]{1,2}[0-9][A-Z]
匹配,即一個或兩個字母,然後是數字和字母。全部放在一起:
sed -rn 's/.*(([A-Z]{1,2}[0-9]{1,2}|[A-Z]{1,2}[0-9][A-Z]) [0-9][A-Z]{2}).*/\1/p'
作爲一般的提示,我建議你開始通過構建和測試各個部件構建更復雜的正則表達式,驗證他們的工作,然後把整個事情一起。在這種情況下,這意味着嘗試匹配** A0或A0A **,然後** 0AA **,然後將它們放在一起。 – itsbruce
奇怪的問題。您的個人資料顯示英國,但是您提供的格式沒有充分描述英國郵政編碼。 –