Вопрос: Конец строки - добавить трубку |


Может кто-нибудь объяснить, как в конце каждой строки я помещаю трубку с регулярным выражением?

Использование поиска и замены в блокноте ++

Я пытаюсь разместить content |

Ура!


2
2018-01-17 16:27


Источник




Ответы:


Если вы просто хотите добавить канал в конце каждой строки, просто используйте это выражение 'find':

$

(Символ доллара совпадает с концом строки в регулярном выражении)

И эта «замена»:

|

Убедитесь, что вы включили поиск регулярных выражений.


5
2018-01-17 16:30





Найти то, что: (.*)

Заменить: $1|

Это использует группировка, так $1 в основном говорит вставить то, что было найдено в круглых скобках, а затем добавить трубку в конец. . будет захватывать любой символ, кроме определенных пробелов, таких как новые строки, которые идеально подходят в этой ситуации. * означает, что 0 или более символов должны быть захвачены с помощью .

Это масштабируемо, поэтому, если вы хотите захватить только определенную строку, например. линии, которые содержат тест:

Найти то, что: (.*test.*)

Заменить: $1|

Итак, если вы введете их, а затем нажмите «Заменить все», у вас будут трубы в конце каждой строки, соответствующие регулярному выражению.


1
2018-01-17 16:32



Очень полезно, поскольку это можно использовать гораздо шире. - norcal johnny


Измененный ответ.
Я бы использовал это. Я работаю в режиме с одним или несколькими линиями.
Я не уверен, что имеется в наличии блокнот (т. Е. Поиск / замена, поиск / замена и т. Д.)
Посмотрите на это: (?=\r\n|\n|\r|$)
и вставьте (замените) это: | 

Просто некоторые заметки по этому сложному вопросу о том, что такое метахар.
Это не так просто, как должно быть, и Docs оставляют желать лучшего.

Во всяком случае, это мое взятие на себя -

 # 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  |
 |
 |
 |
 |'

0
2018-01-17 16:39



Это не работает, если конец строки \r,
Это правда. Должен ли я добавить \r?
Да, это нормально, но это немного сложнее, чем ответ @Jerry.
Изменен мой ответ. И я не уверен $ несложный. Что ты думаешь?
$ так же несложно, как и получается. Как и большинство редакторов, АЭС всегда выполняет регулярные выражения в многострочном режиме. Вы даже не можете отключить его через пользовательский интерфейс. Вы можете отключить его в своем регулярном выражении с помощью (?-m), но вам, вероятно, никогда не понадобится, поскольку \A а также \z тоже произведение. - Alan M