
各行の最後に正規表現でパイプを配置する方法を説明してくれる人はいますか?
Notepad ++ で検索と置換を使用する
私は配置しようとしていますcontent |
乾杯!
答え1
各行の末尾にパイプを追加するだけの場合は、次の「find」正規表現を使用します。
$
(ドル記号は正規表現の行末に一致します)
そしてこの「置き換え」:
|
正規表現検索が有効になっていることを確認してください。
答え2
検索対象:(.*)
と置換する:$1|
これはグループ化なので、$1
基本的には括弧内に見つかったものを挿入し、最後にパイプを追加することを意味します。 は、.
この状況では理想的な改行などの特定の空白を除くすべての文字をキャプチャします。 は、*
0文字以上の文字をキャプチャすることを可能にします。.
これはスケーラブルなので、特定の行、たとえばテストを含む行だけをキャプチャしたい場合は、次のようにします。
検索対象:(.*test.*)
と置換する:$1|
したがって、これらを入力して「すべて置換」をクリックすると、正規表現に一致する各行の末尾にパイプが表示されます。
答え3
回答を変更しました。
私はこれを使います。単一行モードまたは複数行モードのどちらでも動作します。
メモ帳で何が利用できるかはわかりません (検索/置換、検索/置換など)。
これを探して (?=\r\n|\n|\r|$)
、これを挿入 (置換) します。 |
$ metachar が実際何であるかという複雑な主題に関するメモです。
思ったほど簡単ではなく、ドキュメントも改善の余地が大いにあります。
とにかく、これが私の見解です -
# Regular Expression Docs:
# Metacharacter $
# Match the end of the line (or before newline at the end)
# ** This really is misworded, it really means:
#
# In single line mode,
# In two separate matches (in global context)
# Match before and after a newline at the end of a string if there is a newline,
# OR, Match the end of the string only.
#
# In multi-line mode,
# Match before OR after a newline at the end of a line or string,
# but not both.
#
# ---------------------------------------------
# The above explanation is conditional upon the qualifying
# subexpressions surrounding the $ metachar
# ---------------------------------------------
# /$/g Single line mode:
# Matches before newline (if there is one) AND end of string (always this)
print "=== /\$/g ===============\n";
$str = "0 "; $str =~ s/$/|/g; print "'$str'\n---\n";
$str = "1 \n"; $str =~ s/$/|/g; print "'$str'\n---\n";
$str = "2 \n\n"; $str =~ s/$/|/g; print "'$str'\n---\n";
$str = "3 \n\n\n"; $str =~ s/$/|/g; print "'$str'\n---\n";
$str = "4 \n\n\n\n"; $str =~ s/$/|/g; print "'$str'\n\n";
# /$/mg Multi-line mode:
# Matches before each newline (if there is one) OR end of string (not both)
print "=== /\$/mg ===============\n";
$str = "0 "; $str =~ s/$/|/mg; print "'$str'\n---\n";
$str = "1 \n"; $str =~ s/$/|/mg; print "'$str'\n---\n";
$str = "2 \n\n"; $str =~ s/$/|/mg; print "'$str'\n---\n";
$str = "3 \n\n\n"; $str =~ s/$/|/mg; print "'$str'\n---\n";
$str = "4 \n\n\n\n"; $str =~ s/$/|/mg; print "'$str'\n\n";
# /(?=\r\n|\n|\r|$)/g Single line mode:
# Parsing the expression for //m Multi-line mode,
# Equivalent of /$/m can now be run in Single line mode:
# This is What /$/m probably really is.
# Matches before each newline (if there is one) OR end of string (not both)
print "=== /(?=\\r\\n|\\n|\\r|\$)/g ==============\n";
$str = "0 "; $str =~ s/(?=\r\n|\n|\r|$)/|/g; print "'$str'\n---\n";
$str = "1 \n"; $str =~ s/(?=\r\n|\n|\r|$)/|/g; print "'$str'\n---\n";
$str = "2 \n\n"; $str =~ s/(?=\r\n|\n|\r|$)/|/g; print "'$str'\n---\n";
$str = "3 \n\n\n"; $str =~ s/(?=\r\n|\n|\r|$)/|/g; print "'$str'\n---\n";
$str = "4 \n\n\n\n"; $str =~ s/(?=\r\n|\n|\r|$)/|/g; print "'$str'\n\n";
# /(?=\r\n|\n|\r|$)/mg Multi-line mode:
# Exact same output.
print "=== /(?=\\r\\n|\\n|\\r|\$)/mg ==============\n";
$str = "0 "; $str =~ s/(?=\r\n|\n|\r|$)/|/mg; print "'$str'\n---\n";
$str = "1 \n"; $str =~ s/(?=\r\n|\n|\r|$)/|/mg; print "'$str'\n---\n";
$str = "2 \n\n"; $str =~ s/(?=\r\n|\n|\r|$)/|/mg; print "'$str'\n---\n";
$str = "3 \n\n\n"; $str =~ s/(?=\r\n|\n|\r|$)/|/mg; print "'$str'\n---\n";
$str = "4 \n\n\n\n"; $str =~ s/(?=\r\n|\n|\r|$)/|/mg; print "'$str'\n\n";
出力 >>
=== /$/g ===============
'0 |'
---
'1 |
|'
---
'2
|
|'
---
'3
|
|'
---
'4
|
|'
=== /$/mg ===============
'0 |'
---
'1 |
|'
---
'2 |
|
|'
---
'3 |
|
|
|'
---
'4 |
|
|
|
|'
=== /(?=\r\n|\n|\r|$)/g ==============
'0 |'
---
'1 |
|'
---
'2 |
|
|'
---
'3 |
|
|
|'
---
'4 |
|
|
|
|'
=== /(?=\r\n|\n|\r|$)/mg ==============
'0 |'
---
'1 |
|'
---
'2 |
|
|'
---
'3 |
|
|
|'
---
'4 |
|
|
|
|'