我对计算机编程很陌生,我正在尝试编写一个脚本,该脚本将大型fasta文件中的第一个和第二个>
符号之间的所有文本都输出,并将其输出到另一个文件中。我真正需要回答的问题是,如果有一个正则表达式命令,只允许我将文本放在文件中第一个和第二个>
符号之间。
我在网上找到了很多关于在两个字符串之间取文字的内容,但是当我们在文件中多次出现这些字符串的第一次和第二次出现时,我没有找到任何地方。我正在运行perl版本5.010。
答案 0 :(得分:3)
似乎很容易:/>([^>]*)>/
说明:
正则表达式总是找到第一个(最左边)匹配,因此第一个>
很容易。 "查找下一个>
"的所有文字。相当于"找到所有以下非>
个字符",这是我们从[^>]*
获取的地方。
parens ( )
用于捕获$1
中匹配的文字。
答案 1 :(得分:3)
默认情况下,正则表达式是贪婪的,这意味着regexp将尝试匹配尽可能多的文本。为避免这种情况,您可以指定不应出现在>之间的符号。和>,因为它被提议:
>([^>]*)>/
或者您可以通过添加将regexp引擎切换到延迟模式?量词:
>(.*?)>
或
>(.+?)>
Regexp更简单,结果相同。
所以:
if ($content =~ m/>(.*?)>/gs) {
print "Captured: $1"
}