Regular-Expression
在 ed 中搜尋 X 而不是 Y
在編輯器 sam 中,可以使用以下命令搜尋並列印出字元串“ed”而不是“red”:
,x./*\n/ g/ed v/red p
我試圖找到一種在 ed 中做類似事情的方法。我想搜尋字元串“ed”但不獲取以下內容:
r ed, love ed, load ed等。
我熟悉 v 命令,但不確定如何將其與 ag 命令結合使用,或者是否可以在 ed 中使用。
最好使用包含單詞邊界標記的正則表達式來完成:
g/\<ed\>/p
請注意,我並不完全熟悉,
sam
因此我無法評論您正在顯示的編輯表達式。上面的表達式將列印包含單詞的每一**行,即字元串之前和之後的內容不是單詞字元。單詞字元是集合中的字元。and是零寬度斷言,將匹配單詞字元和非單詞字元之間的邊界。ed``ed``[[:alnum:]_]``\<``\>
\<
和\>
是非標準的,但在 GNU 系統和一些 BSD 系統上可用。macOS 使用[[:<:]]
and[[:>:]]
代替,而 GNU 系統還可以\b
在單詞的開頭和結尾同時使用來匹配。如果您想以可移植的方式執行此操作,則必須進行匹配
[^[:alnum:]_]ed[^[:alnum:]_]
,但也要記住單詞出現在行首或行尾的特殊情況,或者一行ed
中只有兩個字元的位置。