Notepad ++中的模式正则表达式替换

时间:2016-05-04 17:04:10

标签: regex shell unix notepad++

如何在Notepad ++&amp ;;中实现这种正则表达式替换? Linux / Unix Korn shell(普通BSD Linux)?

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

请注意 字符。我不确定你想叫什么。

替换#1
o / p应该是

Yabdadba do 
Foobar
Whatever
Jane Doe

替换#2
o / p应该是

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

替换#3
o / p应该是

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

我尝试使用^.*$使用正则表达式选项,但它不会执行任何操作。

4 个答案:

答案 0 :(得分:1)

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

捕获组1包含虚线字符串

捕获组2包含虚线字符串的第二项

捕获组3包含右侧的名称。

您可以尝试regex tester online

答案 1 :(得分: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

答案 2 :(得分:1)

既然你提到了Unix shell:

  1. cut -f2 yourfileawk '{print $2}' yourfile
  2. awk -F"[\t.]" '{print $2, $5}' yourfile
  3. cut -f1 yourfileawk '{print $1}' yourfile
  4. cut从文件中选择字段,因此您的第一个和最后一个问题需要选择第二个和第一个字段。 awk更通用,但可用于同一任务。 您的第二个问题要求打印第二个和第五个字段(由制表符或“。”分隔的字段)。

答案 3 :(得分:0)

notepad++

替换#1

find = ^.*?\s+(.*?)$
repalce = \1

替换#2

find = ^(\w{2})\.(\w{2})\.(\w{2})\.(\w{2})\s+(.*?)$
repalce = \2 \5

替换#3

find = ^([a-z0-9.]+).*?$
repalce = \1