对于下面的示例代码,我只对由反斜杠分隔的最后三位感兴趣(例如,Family / Genus / Species Name)。
所以:
Magnoliopsida/Dilleniidae/Malvales/Malvaceae/Abutilon/Abutilon_theophrasti
Magnoliopsida/Rosidae/Euphorbiales/Euphorbiaceae/Acalypha/Acalypha_rhomboidea
Magnoliopsida/Rosidae/Sapindales/Aceraceae/Acer/Acer_negundo
Magnoliopsida/Rosidae/Sapindales/Aceraceae/Acer/Acer_nigrum
我想:
Malvaceae/Abutilon/Abutilon_theophrasti
Euphorbiaceae/Acalypha/Acalypha_rhomboidea
Aceraceae/Acer/Acer_negundo
Aceraceae/Acer/Acer_nigrum
如何使用正则表达式完成此操作?
编辑: 我正在使用Notepad ++的替换功能和正则表达式。 我能够用^ [^ /] + / [^ /] + / [^ /] + [^ /] /“找到”我要替换的内容 但是当我用什么都替换它时,它会做一些奇怪的事情。 有什么建议吗?
答案 0 :(得分:1)
(/(\w)*){3}$
答案 1 :(得分:0)
不要使用正则表达式。正则表达式不是一个魔术棒,你会在每个涉及字符串的问题上挥手。
如果你正在使用PHP,那么使用explode
函数将组件分解为数组,然后使用数组的最后三个元素。
$name = 'Magnoliopsida/Dilleniidae/Malvales/Malvaceae/Abutilon/Abutilon_theophrasti';
$parts = explode( '/', $name );
$n = count($parts);
print $parts[$n-3] . ' ' . $parts[$n-2] . ' ' . $parts[$n-1];
其他语言也有类似的功能。
同样/
是斜杠,而不是反斜杠。 \
是反斜杠。
答案 2 :(得分:0)
好的,想通了......
我可以搜索:\n^[^/]+/[^/]+/[^/]+[^/]/
并替换为:\n
获得或多或少的我想要的东西。
全部谢谢!
答案 3 :(得分:0)
由于用户将Notepad ++指定为应用程序,我建议替换
^.+/(\w+/\w+/\w+)
与
$1
答案 4 :(得分:0)
在Python中
import re
x="Magnoliopsida/Rosidae/Sapindales/Aceraceae/Acer/Acer_nigrum"
pattern=re.compile(r"\w+\/\w+\/\w+\/(\S+)")
y=pattern.match(x).groups()
print y
输出是(' Aceraceae / Acer / Acer_nigrum',)