我有以下文字:正則表達式捕獲行中的第二個空格?
親近,是旁邊,依照順序,或沿指定路線/ 方向
我怎麼會在「E後面的空格匹配「關閉,然後用標籤替換它?
雖然這可能對大家都很容易,但我花了4個小時試圖做到這一點,但沒有成功。
一般規則是「只匹配第二個單詞之後的空格」。我有超過2000個獨特的線,這就是爲什麼我需要一個正則表達式。
謝謝!
我有以下文字:正則表達式捕獲行中的第二個空格?
親近,是旁邊,依照順序,或沿指定路線/ 方向
我怎麼會在「E後面的空格匹配「關閉,然後用標籤替換它?
雖然這可能對大家都很容易,但我花了4個小時試圖做到這一點,但沒有成功。
一般規則是「只匹配第二個單詞之後的空格」。我有超過2000個獨特的線,這就是爲什麼我需要一個正則表達式。
謝謝!
在vi
編輯器,你可以使用這個搜索/替換:
:s/^\([[:blank:]]*\w\+[[:blank:]]\+\w\+\)[[:blank:]]\+/\1\t/
或更短(感謝@PeterRincker):
:%s/\v(\w+\zs\s+){2}/\t
有點短:':%s/\ v(\ w + \ zs \ s +){2}/\ t'甚至更短:':%norm 2f r^I'其中'^ I'是通過鍵入的製表符'
謝謝@PeterRincker:'%s/\ v(\ w + \ zs \ s +){2}/\ t'是一個很好的 – anubhava 2014-11-06 21:13:13
搜索:^([^ ]+[ ]+[^ ]+)[ ]
替換:\1\t
從行的開頭,尋找非空格後面的空間,然後另一組非空間的格局。最後,匹配一個空格字符。
替換是導致最終空格字符的所有內容,然後是選項卡。
演示:http://regex101.com/r/oS8vV7/1
你可能不能夠匹配只有你要替換的空間。這將需要可變長度的後視鏡isn't supported。
s/\s//2
這可以用於搜索空間(\s
)並刪除空間,其中2
表示第二個空格。
用這個特定的文字來做這件事很容易..是否有更通用的規則需要遵循?什麼語言/正則表達式引擎? – 2014-11-06 19:58:04
是的,我希望提供幫助的一般規則是「總是隻匹配一行中的第二個空格,沒有別的,沒有什麼不足。」我必須做這2000次,然後用選項卡替換匹配的空間 – user798719 2014-11-06 20:10:24
爲什麼你想使用正則表達式?爲什麼不使用字符串函數? – anubhava 2014-11-06 20:23:53