qiime1和2有啥不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qiime1和2有啥不同相关的知识,希望对你有一定的参考价值。
参考技术A qiime2虽然和qiime1只差了一个数字,但是两者之间的差异很大,Qiime2是对Qiime1进行了重新设计和编程,弥补了很多qiime1中的不足。qiime2最新的版本是2019.1,该润健更新的很勤快,2-3个月就出一个新版本。_iime2的主要特点:
_ntegrated and automatic tracking of data provenance
_emantic type system
_lugin system for extending microbiome analysis functionality
_upport for multiple types of user interfaces (e.g. API, command line, graphical)
_iime2的版本更新很快,而且不同版本之间存在着比较大的差异,作者有时候会对命令的具体名字进行改动。所以大家学习的时候,一定要参考相对应的版本的文档进行。
正则表达式“\\”和“,”之间有啥不同?
【中文标题】正则表达式“\\\\”和“,”之间有啥不同?【英文标题】:What's the different between the regex "\\," and ","?正则表达式“\\”和“,”之间有什么不同? 【发布时间】:2015-02-03 15:30:58 【问题描述】:下面的代码示例尝试通过逗号split
一个字符串(即将\\,
传递给String.split()
)
当我将分隔符更改为 ,
时,它工作正常。
问题是使用 ,
和 \\,
有什么区别?我应该什么时候使用每一个?
编辑
另外,如果我输入除“,”之外的字符,例如p
,语句将引发运行时异常,因为p
不是要转义的特殊正则表达式字符,那么为什么它接受转义逗号?!
例子:
String x = "a,b,c,d";
System.out.println(Arrays.toString(x.split("\\,")));
输出:
[a, b, c, d]
【问题讨论】:
【参考方案1】:没有区别。 \\
用于转义正则表达式中的特殊字符。字符,
不是其中之一。
【讨论】:
但是如果我输入了,
以外的字符,例如p
,语句会抛出运行时异常,因为p
不是要转义的特殊正则表达式字符。跨度>
是的,当您不必要地转义非字母数字字符时,Java 正则表达式引擎是宽松的(不是每个人都能记住您需要转义或不需要转义的元字符)。有了字母,那就不一样了。正则表达式中s
和\s
之间存在很大差异。
@TimPietzcker,有官方文件可以备份你说的话吗?
@MuhammadGelbana:不是官方的,但regexguru.com/2008/04/escape-characters-only-when-necessary 是一个有趣的读物。
@MuhammadGelbana: It is an error to use a backslash prior to any alphabetic character that does not denote an escaped construct; these are reserved for future extensions to the regular-expression language. A backslash may be used prior to a non-alphabetic character regardless of whether that character is part of an unescaped construct.
来自docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html【参考方案2】:
根据\\,
和,
拆分输入将返回相同的输出。由于,
不是正则表达式中的特殊字符,因此您无需对其进行转义。
但是转义字符有一些特殊含义。例如 \\s
匹配空格字符。 \\S
匹配非空格字符。 \\d
匹配一个数字。 \\D
匹配非数字字符。所以不要转义字母。
转义一些特殊字符,如,
、%
、#
不会产生任何问题。但是转义一些特殊字符的功能会有所不同。例如,\\$
匹配文字 $
符号,但未转义的 $
匹配行尾。
最后,不要转义数字以匹配文字数字。例如,1
和 \\1
具有不同的含义。 1
与文字 1
匹配,其中 \\1
指的是第一个捕获的组。
【讨论】:
【参考方案3】:您没有说 "\\," 是否有效或似乎完全像 "," 作为拆分正则表达式。我怀疑它是基于我对 javac 和正则表达式的了解。
当您编写“\\”时,.class 文件中出现的字符串就是“\”。这是由于 javac 如何处理字符串文字。
当正则表达式编译器看到“\”时,它实际上将该字符串视为“,”,原因类似于 javac。当然,在正则表达式中使用 '\' 有很好的理由。例如,如果 '[' 字符出现在您正在扫描的输入中,并且您希望解析器在查找 '[' 后跟数字时保持刚性,那么您必须编写字符串文字,如“\\[[0-9 ][0-9]*" 或更简洁的 "\\[\d+"。这是因为正则表达式编译器将 '[' 视为特殊的,就像前者所演示的那样。
编辑:“\”的原因。当您阅读正则表达式构造的摘要部分http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#sum 时,其处理方式与“\p”有所不同,这表明所有字符类都有跟随在“\”之后的字母,这意味着实现者可能会考虑“\p " 一个错误,而不仅仅是简单的 "p"。我鼓励你不要在最初的问题中添加额外的问题,如果没有其他原因,只是为了让那些试图回答你的第一个问题而没有注意到你提出后续问题的人不那么困惑。相反,您应该发布一个单独的问题,尤其是当它像您的后续问题一样暴露特殊情况时。
在我看来,作者走的是正确的道路,应该鼓励他们的用户完全理解他们编写的每个正则表达式。
【讨论】:
(当你写“\”时,那么.class文件中出现的字符串就是“\”。),你的意思是当他写“\\”时?你在写的第一个字符串中有一个 SINGLE 反斜杠,你是这个意思吗? 不,*** 编辑器吞噬了我多余的字符,这表明这是我第一次尝试在 *** 上编写此类代码。 在我看来,作者走的是正确的道路,这应该鼓励他们的用户完全理解他们编写的每个正则表达式。 - 你是想说这令人困惑吗好吗? @OldCurmudgeon,您必须更全面地解释您的评论,因为您的姓名和声誉不一致。在我看到你的名声之前,我下意识的反应是认为你在拖钓。但我可以大胆地说一件事,困惑是好事,因为它是学习的机会。另一方面,保持困惑而不寻求帮助是不好的。因此,我们有类似 *** 之类的东西。\\,
有效而 \\p
无效看起来令人困惑(正如 OP 所要求的那样)-您是在暗示这是一个很好的举动,并且以某种方式 可以帮助您完全理解... - 也许我误解了这句话。以上是关于qiime1和2有啥不同的主要内容,如果未能解决你的问题,请参考以下文章
Windows 中的 python 2 和 python 3 之间的命名管道的工作方式有啥不同吗?