如何在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
我尝试使用^.*
和$
使用正则表达式选项,但它不会执行任何操作。
答案 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:
cut -f2 yourfile
或awk '{print $2}' yourfile
awk -F"[\t.]" '{print $2, $5}' yourfile
cut -f1 yourfile
或awk '{print $1}' yourfile
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