2016-05-04 4 views
-2

Как добиться такого замещения регулярного выражения в Notepad ++ & Linux/Unix Korn shell (Plain BSD Linux)?Замена регулярного выражения шаблона в Notepad ++

z1.9z.01.01   Yabdadba do 
da.8p.25.7p   Foobar 
tg.7j.75.2q   Whatever 
90.6q.88.zx   Jane Doe 

Примечание: знак. Я не уверен, что вы хотите назвать.

Замена # 1
о/р должно быть

Yabdadba do 
Foobar 
Whatever 
Jane Doe 

Замена # 2
о/р должно быть

9z   Yabdadba do 
    8p   Foobar 
    7j   Whatever 
    6q   Jane Doe 

Замена # 3
о/р должно быть

z1.9z.01.01 
da.8p.25.7p 
tg.7j.75.2q 
90.6q.88.zx 

Я пробовал использовать ^.* и $ с опцией регулярного выражения, но он ничего не сделает.

+0

Что вы попробовали? Что вы получили? – Toto

+0

Спасибо всем. Мне жаль, что я не смогу выбрать более 1 анс и оставить их в качестве выключателей. Но это не будет ... бог Спасибо, тем не менее. – user1874594

ответ

1

Используя предположение, что части фиксированы и этого вида XX.XX.XX.XX

Для замещения # 1
Найти (?m)^[^.\s]{2}(?:\.[^.\s]{2}){3}[^\S\r\n]+(?=\S.*)
Заменить nothing

(?m)       # Multi-line mode 
^        # BOL 
[^.\s]{2}      # Four parts separated by dot's 
(?: \. [^.\s]{2}){3} 
[^\S\r\n]+     # Whitespace following 
(?= \S .*)     # Must be some text here 

Для замещения # 2
Найти (?m)^[^.\s]{2}\.([^.\s]{2})(?:\.[^.\s]{2}){2}(?=[^\S\r\n]+\S.*)
Заменить ' $1 '

(?m)       # Multi-line mode 
^        # BOL 
[^.\s]{2}      # Four parts separated by dot's 

\. 
([^.\s]{2})     # (1) 
(?: \. [^.\s]{2}){2} 
(?=       # Whitespace following 
     [^\S\r\n]+ 
     \S .*       # Must be some text here 
) 

Для замещения # 3
Найти (?m)^([^.\s]{2}(?:\.[^.\s]{2}){3})[^\S\r\n]+\S.*
Заменить $1

(?m)       # Multi-line mode 
^        # BOL 
(       # (1 start), Four parts separated by dot's 
     [^.\s]{2} 
     (?: \. [^.\s]{2}){3} 
)        # (1 end) 
[^\S\r\n]+     # Whitespace following 
\S .*       # Must be some text here 
+0

Спасибо вам всем. Мне жаль, что я не смогу выбрать более 1 анс и оставить их в качестве выключателей. Но это не будет ... бог Спасибо, тем не менее. – user1874594

0

Для notepad++:

Замена # 1

найти = ^.*?\s+(.*?)$
Repalce = \1


Substitut иона # 2

найти = ^(\w{2})\.(\w{2})\.(\w{2})\.(\w{2})\s+(.*?)$
Repalce = \2 \5


Замена # 3

найти = ^([a-z0-9.]+).*?$
Repalce = \1

+0

Спасибо вам всем. Мне жаль, что я не смогу выбрать более 1 анс и оставить их в качестве выключателей. Но он не будет lemmw ... bur Спасибо, тем не менее – user1874594

1

^([a-z0-9]+?[.]([a-z0-9]+?)[.][a-z0-9]+?[.][a-z0-9]+?[ ]+(.+)$

Захват 1 группа содержит пунктирные струны

захвата группы 2 содержит второй член пунктирных строк

Захват группы 3 содержит имена по праву боковая сторона.

Вы можете попробовать на regex tester online

+0

Спасибо вам всем. Мне жаль, что я не смогу выбрать более 1 анс и оставить их в качестве выключателей. Но это не будет ... bur Спасибо, тем не менее – user1874594

1

Поскольку вы упомянули Unix оболочки:

  1. cut -f2 yourfile или awk '{print $2}' yourfile
  2. awk -F"[\t.]" '{print $2, $5}' yourfile
  3. cut -f1 yourfile или awk '{print $1}' yourfile

cut выбирает поля из файлов, так что ваш первый и последний вопрос требовал, чтобы выбрать второе и первое поле. awk более универсален, но может использоваться для одной и той же задачи. Ваш второй вопрос требует печати полей второй и пятой (поля, разделенные одной вкладкой или «.»).

+0

Спасибо всем. Мне жаль, что я не смогу выбрать более 1 анс и оставить их в качестве выключателей. Но это не будет ... бог Спасибо, тем не менее. – user1874594