我曾嘗試使用此正則表達式刪除冒號前的所有內容,但是它會反覆刪除。正則表達式:如何刪除每行冒號前的所有內容
^[^:]+:\s*
下需要從
afghanistan : Afghanistan
albania : Albania
algeria : Algeria
andorra : Andorra
angola : Angola
改變
Afghanistan
Albania
Algeria
Andorra
Angola
任何指針?
我曾嘗試使用此正則表達式刪除冒號前的所有內容,但是它會反覆刪除。正則表達式:如何刪除每行冒號前的所有內容
^[^:]+:\s*
下需要從
afghanistan : Afghanistan
albania : Albania
algeria : Algeria
andorra : Andorra
angola : Angola
改變
Afghanistan
Albania
Algeria
Andorra
Angola
任何指針?
如果你想確保你跨線不會溢出,你需要添加\r\n
到否定字符類和替換\s
可以匹配換行符與\h
(水平空白圖案)(或[ \t]
如果不支持\h
)。
所以,你可以使用
^[^:\r\n]+:\h*
(see demo)或
^[^:\r\n]+:[ \t]*
與空字符串(another demo)取代。
在記事本++,您需要將整行匹配擺脫遞歸行爲:
^[^:\r\n]+:\h*(.*)
替換\1
。見yet another regex demo。
圖案的詳細資料
^
- 開始一個線的(如果不是默認值,在前面加上(?m)
直列改性劑)[^:\r\n]+
- 1或大於:
,CR其它更多字符和LF:
- 冒號\h*
- 零個或多個水平空格(.*)
- 第1組(從\1
或$1
替換爲替換模式)儘可能多(直到行尾)捕獲除換行符之外的零個或多個字符。謝謝您的詳細解答@Wiktor –
echo "afghanistan : Afghanistan" | sed 's/\(.*\):\(.*\)/\2/'
你在哪裏使用這個(工具/語言)?如果記事本++請參閱https://stackoverflow.com/questions/40017426/notepad-regex-issue-with-anchor-and-repeating-patterns –
我正在使用括號。以下由@WiktorStribiżew的答案工作得很好。 –