我向你保證,我已經在網站上搜索了大約兩個小時。我發現應該已經工作,但他們沒有。Perl,刪除前三個字符後的所有內容
我有一行由不同數量的空格分隔的數字組成。我想刪除第三個數字後的所有內容。
我應該說,我一直在寫的一切都假設\S\s\S\s\S
會匹配前三個數字。 1和2,以及2和3
之間的空間我期待下面的工作:
s/^.*?[\S\s\S\s\S].{5}//s;
但它沒有什麼我想要的正好相反。
我想2 3 0 4 5 6 7 1 0 1 2
成爲2 3 0
我真的寧願保持它替代。我已經試過一個人提到的背後,我沒有運氣。在嘗試這些命令之前,我應該將前3個數字保存爲字符串嗎?
編輯:
我應該澄清的是,這些數字可能是在形式或1.57 1.00E01爲好。當我試圖將這些工作納入基準工作時,我有了整數。
'\ S \ S \ S \ S \ S'確實會匹配'2 3 0';然而,方括號表示[字符類](http://www.regular-expressions.info/charclass.html),所以'[\ S \ s \ S \ s \ S]'只會匹配一個字符,提供該字符是空格('\ S')或非空格('\ s')。所以'/^.*?[\ S \ s \ S \ s \ S]。{5} // s;'等價於s /^.* ?. {6} // s;', (因爲'。*?'將盡可能少地匹配,在這種情況下它們總是空字符串)等同於s/^ {6} // s;' - 刪除前六個字符,提供的字符串*至少包含六個字符。 – ruakh 2012-08-08 17:55:45
@ruakh感謝您鏈接到角色類頁面。我原本剛剛在括號內有一個Character和一個空格來測試它是否工作,然後在不重新測試的情況下對其進行擴展。 – 2012-08-08 18:20:37
爲了讓事情更清楚:您的輸入是否由唯一的數字組成,總是用空格分隔? – pavel 2012-08-08 18:49:46