正则表达式(1)

 

字符转义

大多数重要的正则表达式语言运算符都是非转义的单个字符。转义符 \(单个反斜杠)通知正则表达式分析器反斜杠后面的字符不是运算符。例如,分析器将星号 (*) 视为重复限定符,而将后跟星号的反斜杠 (\*) 视为 Unicode 字符 002A。

下表中列出的字符转义在正则表达式和替换模式中都会被识别。

转义符说明
一般字符除 . $ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配。
\a与响铃(警报)\u0007 匹配。
\b如果在 [] 字符类中,则与退格符 \u0008 匹配;如果不是这种情况,请参见本表后面的“注意”部分。
\t与 Tab 符 \u0009 匹配。
\r与回车符 \u000D 匹配。
\v与垂直 Tab 符 \u000B 匹配。
\f与换页符 \u000C 匹配。
\n与换行符 \u000A 匹配。
\e与 Esc 符 \u001B 匹配。
\040将 ASCII 字符匹配为八进制数(最多三位);如果没有前导零的数字只有一位数或者与捕获组号相对应,则该数字为后向引用。(有关详细信息,请参见。)例如,字符 \040 表示空格。
\x20使用十六进制表示形式(恰好两位)与 ASCII 字符匹配。
\cC与 ASCII 控制字符匹配;例如,\cC 为 Ctrl-C。
\u0020使用十六进制表示形式(恰好四位)与 Unicode 字符匹配。
\在后面带有不识别为转义符的字符时,与该字符匹配。例如,\*\x2A 相同。

注意    转义字符 \b 是一个特例。在正则表达式中,\b 表示单词边界(\w\W 之间的字符);不过,在 [] 字符类中,\b 表示退格符。在替换模式中,\b 始终表示退格符。

替换

只在替换模式中允许替换。对于正则表达式中的类似功能,使用后向引用(如 \1)。有关后向引用的详细信息,请参见和反向引用构造。

字符转义和替换是在替换模式中识别的唯一的特殊构造。下面几部分描述的所有语法构造只允许出现在正则表达式中;替换模式中不识别它们。例如,替换模式 a*${txt}b 插入字符串“a*”,后跟由 txt 捕获组匹配的子字符串(如果有的话),再后跟字符串“b”。在替换模式中,* 字符不会识别为元字符。与此类似,在正则表达式匹配模式中不识别 $ 模式。在正则表达式中,$ 指定字符串的结尾。

下表显示如何定义命名并编号的替换模式。

字符说明
$number替换由组号 number(十进制)匹配的最后一个子字符串。
${name}替换由 (?<name> ) 组匹配的最后一个子字符串。
$$替换单个“$”字符。
$&替换完全匹配本身的一个副本。
$`替换匹配前的输入字符串的所有文本。
$'替换匹配后的输入字符串的所有文本。
$+替换最后捕获的组。
$_替换整个输入字符串。

字符类

字符类是一个字符集,如果字符集中的任何一个字符有匹配,它就会找到该匹配项。下表总结了字符匹配语法。

字符类说明
.与除 \n 之外的任何字符匹配。如果已用 Singleline 选项做过修改,则句点字符将与任何字符匹配。有关详细信息,请参见正则表达式选项。
[aeiou]与指定字符集中包含的任何单个字符匹配。
[^aeiou]与不在指定字符集中的任何单个字符匹配。
[0-9a-fA-F]使用连字号 () 允许指定连续字符范围。
\p{name}{name} 指定的命名字符类中的任何字符匹配。支持的名称为 Unicode 组和块范围。例如,LlNdZIsGreekIsBoxDrawing
\P{name}与在 {name} 中指定的组和块范围中未包含的文本匹配。
\w与任何单词字符匹配。等效于 Unicode 字符类别 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 \w 等效于 [a-zA-Z_0-9]
\W与任何非单词字符匹配。等效于 Unicode 类别 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 \W 等效于 [^a-zA-Z_0-9]
\s与任何空白字符匹配。等效于 Unicode 字符类别 [\f\n\r\t\v\x85\p{Z}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 \s 等效于 [ \f\n\r\t\v]
\S与任何非空白字符匹配。等效于 Unicode 字符类别 [^\f\n\r\t\v\x85\p{Z}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 \S 等效于 [^ \f\n\r\t\v]
\d与任何十进制数字匹配。等效于 \p{Nd}(对于 Unicode 类别)和 [0-9](对于非 Unicode 类别)ECMAScript 行为。
\D与任何非数字匹配。等效于 \P{Nd}(对于 Unicode 类别)和 [^0-9](对于非 Unicode 类别)ECMAScript 行为。

可以使用 方法找到某个字符所属的 Unicode 类别。

有关 Unicode 字符类别的详细信息,请参见文档 Unicode Data File Format(Unicode 数据文件格式),此文档可从 Unicode 技术委员会 (UTC) 的 Web 站点 http://www.unicode.org/Public/UNIDATA/UnicodeData.html 获得。

正则表达式选项

可以使用影响匹配行为的选项修改正则表达式模式。可以通过下列两种基本方法之一设置正则表达式选项:可以在 Regex(pattern, options) 构造函数中的 options 参数中指定,其中 optionsRegexOptions 枚举值的按位“或”组合;也可以使用内联 (?imnsx-imnsx:) 分组构造或 (?imnsx-imnsx) 其他构造在正则表达式模式内设置它们。

在内联选项构造中,一个选项或一组选项前面的减号 (-) 用于关闭这些选项。例如,内联构造 (?ix-ms) 将打开 IgnoreCaseIgnorePatternWhiteSpace 选项而关闭 MultilineSingleline 选项。默认情况下,关闭所有正则表达式选项。

下表列出了 RegexOptions 枚举的成员以及等效的内联选项字符。请注意,选项 RightToLeftCompiled 只适用于表达式整体而不允许内联。(它们只能在 Regex 构造函数的 options 参数中指定。)选项 NoneECMAScript 不允许内联。

RegexOption 成员内联字符说明
NoneN/A指定不设置任何选项。
IgnoreCasei指定不区分大小写的匹配。
Multilinem指定多行模式。更改 ^$ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。
ExplicitCapturen指定唯一有效的捕获是显式命名或编号的 (?<name>...) 形式的组。这允许圆括号充当非捕获组,从而避免了由 (?:...) 导致的语法上的笨拙。
CompiledN/A指定正则表达式将被编译为程序集。生成该正则表达式的 Microsoft 中间语言 (MSIL) 代码;以较长的启动时间为代价,得到更快的执行速度。
Singlelines指定单行模式。更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。
IgnorePatternWhitespacex指定从模式中排除非转义空白并启用数字符号 (#) 后面的注释。(有关转义空白字符的列表,请参见字符转义。)请注意,空白永远不会从字符类中消除。
RightToLeftN/A指定搜索是从右向左而不是从左向右进行的。具有此选项的正则表达式将移动到起始位置的左边而不是右边。(因此,起始位置 应指定为字符串的结尾而不是开头。)为了避免构造具有无限循环的正则表达式的可能性,此选项不能在中流指定。但是,(?<) 回顾后发构造提供了可用作子表达式的类似替代物。

RightToLeft 只更改搜索方向。它不会反转所搜索的子字符串。预测先行和回顾后发断言不改变:预测先行向右搜索;回顾后发向左搜索。

ECMAScriptN/A指定已为表达式启用了符合 ECMAScript 的行为。此选项仅可与 IgnoreCaseMultiline 标志一起使用。将 ECMAScript 同任何其他标志一起使用将导致异常。
CultureInvariantN/A指定忽略语言中的区域性差异。有关详细信息,请参见。

原子零宽度断言

表中描述的元字符不会使引擎在字符串中前进或使用字符。它们只是根据字符串中的当前位置使匹配成功或失败。例如,^ 指定当前位置在行或字符串的开头。因此,正则表达式 ^FTP 只会返回那些在行的开头出现的字符串“FTP”的匹配项。

断言说明
^指定匹配必须出现在字符串的开头或行的开头。有关详细信息,请参见正则表达式选项中的 Multiline 选项。
$指定匹配必须出现在以下位置:字符串结尾、字符串结尾的 \n 之前或行的结尾。有关详细信息,请参见正则表达式选项中的 Multiline 选项。
\A指定匹配必须出现在字符串的开头(忽略 Multiline 选项)。
\Z指定匹配必须出现在字符串的结尾或字符串结尾的 \n 之前(忽略 Multiline 选项)。
\z指定匹配必须出现在字符串的结尾(忽略 Multiline 选项)。
\G指定匹配必须出现在上一个匹配结束的地方。与 Match.NextMatch() 一起使用时,此断言确保所有匹配都是连续的。
\b指定匹配必须出现在 \w(字母数字)和 \W(非字母数字)字符之间的边界上。匹配必须出现在单词边界上,即出现在由任何非字母数字字符分隔的单词中第一个或最后一个字符上。
\B指定匹配不得出现在 \b 边界上。

限定符

限定符将可选数量的数据添加到正则表达式。限定符表达式应用于紧挨着它前面的字符、组或字符类。.NET Framework 正则表达式支持最小匹配 (lazy) 限定符。

下表描述了影响匹配数量的元字符。

限定符说明
*指定零个或更多个匹配;例如 \w*(abc)*。等效于 {0,}
+指定一个或多个匹配;例如 \w+(abc)+。等效于 {1,}
?指定零个或一个匹配;例如 \w?(abc)?。等效于 {0,1}
{n}指定恰好 n 个匹配;例如 (pizza){2}
{n,}指定至少 n 个匹配;例如 (abc){2,}
{n,m}指定至少 n 个但不多于 m 个匹配。
*?指定尽可能少地使用重复的第一个匹配(等效于 lazy *)。
+?指定尽可能少地使用重复但至少使用一次(等效于 lazy +)。
??指定使用零次重复(如有可能)或一次重复 (lazy ?)。
{n}?等效于 {n} (lazy {n})
{n,}?指定尽可能少地使用重复但至少使用 n 次 (lazy {n,})。
{n,m}?指定介于 n 次和 m 次之间、尽可能少地使用重复 (lazy {n,m})。

分组构造

分组构造使您可以捕获子表达式组并提高具有非捕获预测先行和回顾后发修饰符的正则表达式的效率。下表描述了正则表达式分组构造。

分组构造说明
(   )捕获匹配的子字符串(或非捕获组;有关详细信息,请参见正则表达式选项中的 ExplicitCapture 选项)。使用 () 的捕获根据左括号的顺序从 1 开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。
(?<name>   )将匹配的子字符串捕获到一个组名称或编号名称中。用于 name 的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如 (?'name')
(?<name1-name2> )平衡组定义。删除先前定义的 name2 组的定义并在 name1 组中存储先前定义的 name2 组和当前组之间的间隔。如果未定义 name2 组,则匹配将回溯。由于删除 name2 的最后一个定义会显示 name2 的先前定义,因此该构造允许将 name2 组的捕获堆栈用作计数器以跟踪嵌套构造(如括号)。在此构造中,name1 是可选的。可以使用单引号替代尖括号,例如 (?'name1-name2')
(?:   )非捕获组。
(?imnsx-imnsx:   )应用或禁用子表达式中指定的选项。例如,(?i-s: ) 将打开不区分大小写并禁用单行模式。有关详细信息,请参见正则表达式选项。
(?=   )零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如,\w+(?=\d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
(?!   )零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如,\b(?!un)\w+\b 与不以 un 开头的单词匹配。
(?<=   )零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(?<!   )零宽度负回顾后发断言。仅当子表达式不在此位置的左侧匹配时才继续匹配。
(?>   )非回溯子表达式(也称为“贪婪”子表达式)。该子表达式仅完全匹配一次,然后就不会逐段参与回溯了。(也就是说,该子表达式仅与可由该子表达式单独匹配的字符串匹配。)

命名捕获根据左括号的从左到右的顺序按顺序编号(与非命名捕获类似),但在对所有非命名捕获进行计数之后才开始对命名捕获进行编号。例如,模式 ((?<One>abc)/d+)?(?<Two>xyz)(.*) 按编号和名称产生下列捕获组。(编号为 0 的第一个捕获总是指整个模式)。

编号名称模式
00(默认名称)((?<One>abc)/d+)?(?<Two>xyz)(.*)
11(默认名称)((?<One>abc)/d+)
22(默认名称)(.*)
31(?<One>abc)
42(?<Two>xyz)

后向引用构造

下表列出了用于将后向引用修饰符添加到正则表达式中的可选参数。

后向引用构造定义
\number后向引用。例如,(\w)\1 查找双写的单词字符。
\k<name>命名后向引用。例如,(?<char>\w)\k<char> 查找双写的单词字符。表达式 (?<43>\w)\43 执行同样的操作。可以使用单引号替代尖括号,例如 \k'char'

替换构造

下表列出了用于修改正则表达式以允许进行二者之一/或匹配的特殊字符。

替换构造定义
|与用 | (垂直条)字符分隔的任何一个术语匹配;例如,cat|dog|tiger。使用最左侧的成功匹配。
(?(expression)yes|no)如果表达式在此位置匹配,则与“yes”部分匹配;否则,与“no”部分匹配。“no”部分可省略。表达式可以是任何有效的子表达式,但它将变为零宽度断言,因此该语法等效于 (?(?=expression)yes|no)。请注意,如果表达式是命名组的名称或捕获组编号,则替换构造将解释为捕获测试(在本表的下一行对此进行了描述)。若要避免在这些情况下产生混淆,则可以显式拼出内部 (?=expression)
(?(name)yes|no)如果命名捕获字符串有匹配,则与“yes”部分匹配;否则,与“no”部分匹配。“no”部分可省略。如果给定的名称不与此表达式中使用的捕获组的名称或编号对应,则替换构造将解释为表达式测试(在本表的上一行进行了描述)。

其他构造

下表列出了用于修改正则表达式的子表达式。

构造定义
(?imnsx-imnsx)对诸如不区分大小写这样的选项进行设置或禁用以使其在模式中间打开或关闭。有关特定选项的信息,请参见正则表达式选项。在封闭组结束之前,选项更改将一直有效。请参见有关分组构造 (?imnsx-imnsx: ) 的信息,它是一个更为巧妙的形式。
(?#    )插入到正则表达式内部的内联注释。该注释在第一个右括号字符处终止。
# [至行尾]X 模式注释。该注释以非转义的 # 开头,并继续到行的结尾。(请注意,必须激活 x 选项或 RegexOptions.IgnorePatternWhitespace 枚举选项才能识别此类注释。)

正则表达式语言

为操纵文本,对正则表达式语言进行了精心设计和优化。正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理能力。

您可能比较熟悉在 DOS 文件系统中使用的 ? 和 * 元字符,这两个元字符分别代表任意单个字符和字符组。DOS 文件命令 COPY *.DOC A: 命令文件系统将文件扩展名为 .DOC 的所有文件均复制到 A 驱动器的磁盘中。元字符 * 代表文件扩展名 .DOC 前的任何文件名。正则表达式极大地拓展了此基本思路,提供大量的元字符组,使通过相对少的字符描述非常复杂的文本匹配表达式成为可能。

例如,正则表达式 \s2000 在应用到文本正文时,将匹配在字符串“2000”前为任意空白字符(例如空格或制表符)的所有匹配项。

注意    如果使用的是 C++、C# 或 JScript,则在特殊转义符(例如 \s)之前必须加上附加的反斜杠(例如“\\s2000”),以表明转义符中的反斜杠是原义字符。否则,正则表达式引擎会将 \s 中的反斜杠和 s 当作两个单独的运算符来处理。如果使用的是 Visual Basic .NET,则不必添加反斜杠。如果使用的是 C#,则可以使用以 @ 为前缀并禁用转义的 C# 字符串(例如 @"\s2000")。

正则表达式还可以执行更为复杂的搜索。例如,正则表达式 (?<char>\w)\k<char> 使用命名分组和反向引用来搜索相邻的成对字符。当应用于“I'll have a small coffee”这一字符串时,它将在单词“I'll”、“small”和“coffee”中找到匹配项。(有关此正则表达式的详细信息,请参见反向引用。)

以下各节详细介绍定义 .NET Framework 正则表达式语言的元字符组,以及说明如何使用正则表达式类来在您的应用程序中实现正则表达式。

转载于:https://www.cnblogs.com/bo-bo/archive/2009/06/21/1507688.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度地图infowindow的close事件_百度地图蒙圈:车主要加油误导母婴店 跑偏理由令人啼笑皆非...

常在江湖飘&#xff0c;哪有不挨刀。经常驾车出门在外的您&#xff0c;有过被导航坑的经历么&#xff1f;其实在早些年手机导航刚刚兴起的时候&#xff0c;这类现象确实比较常见&#xff0c;但是到了如今大数据的时代&#xff0c;手机导航数据更新比较及时&#xff0c;问题已经…

Linux中后台执行scp

最近在一台远程机器上scp一个大文件&#xff0c;需要大半天才能完全down下来&#xff0c;用xshell工具执行完命令之后还不能关闭&#xff0c;否则的话就停止了&#xff0c;我的本本还不能一直放这开xshell。就想到nohup&#xff0c;但是scp命令输入密码是提示的&#xff0c;不能…

质量效能研发部php,【百度】百度质量效能研发部【社招/实习】

职位&#xff1a;百度质量效能研发部【社招/实习】-百度【岗位职责】C研发工程师 / iOS∧orid 开发工程师 / 平台开发工程师 / 算法工程师(智能测试方向) base 上海、北京 本次招录面向各程序栈的优秀同学们&#xff0c;开放社招及实习入口&#xff0c;四类方向供大家选择&…

商业模式新生代_业务分析基础 - 商业模式新生代01篇

商业模式画布商业模式新生代由亚历山大奥斯特瓦德&#xff08;Alexander Osterwalder&#xff09;和伊夫皮尼厄&#xff08;Yves Pigneur&#xff09;编写&#xff0c;发表于2016年。该书提出了商业模式画布模型&#xff0c;既可以用于创业公司&#xff08;Start-ups&#xff0…

yum 安装 sun java,CentOS yum安装sun Java jre jdk和openjdk

在Linux下的tty终端下&#xff0c;安装sun jre&#xff0c;但是去Oracle安装&#xff0c;下载居然还要登录&#xff0c;使用cookie&#xff0c;没办法。直接到http://www.java.com/下载了。说明&#xff1a;如果使用yum install 安装软件&#xff0c;具体的软件名称不知道&…

CodePage简介(转)

CodePage简介(转) 1. Codepage的定义和历史 字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要使用内码,内码分为 单字节内码 -- Single-Byte character sets (SBCS),可以支持256个字符编码. 双字节内码 -- Double-Byte character sets)(DBCS),可…

折半查找和二叉排序树的时间性能_leecode刷题----二分搜索与二叉查找(排序)树...

预备知识&#xff1a;二分查找已知一个排序数组A&#xff0c;如A[-1,2,5,20,90,100,207,800]&#xff0c;另外一个乱序数组B&#xff0c;如B[50,90,3,-1,2-7,80],求B中任意某个元素是否在A中出现&#xff0c;结果存储在数组C中&#xff0c;出现用1代表&#xff0c;未出现用0代表…

php pacs,DICOM医学图像处理:WEB PACS初谈四,PHP DICOM Class – 只要踏出一步,路就在前方——zssure – CSDN博客...

背景&#xff1a;预告了好久的几篇专栏博文一直没有整理好&#xff0c;主要原因是早前希望搭建的WML服务器计划遇到了问题。起初以为参照DCMTK的官方文档wwwapp.txt结合前两天搭建的WAMP服务器可以顺利的实现WML服务&#xff0c;借此就可以同时完成WEB PACS系列以及搭建Dicom W…

COM, COM+ and .NET 的区别

所有的优秀程序员都会尽自己的最大努力去使自己所写的程序具有更好的可重用性&#xff0c;因为它可以让你快速地写出更加健壮和可升级性的程序。   有两种使代码重用的选择&#xff1a;  1&#xff0e;白盒&#xff1a;最简单的一种&#xff0c;就是把你的程序片拷贝到另一…

mfc在运行的时候为什么没有实例化_为什么不建议把数据库部署在Docker容器内?...

本文同步Java知音社区&#xff0c;专注于Java原文&#xff1a;https://www.toutiao.com/i6805798581971190276/近2年Docker非常的火热&#xff0c;各位开发者恨不得把所有的应用、软件都部署在Docker容器中&#xff0c;但是您确定也要把数据库也部署的容器中吗&#xff1f;这个…

php 获取指定时间 次日,PHP时间判断语句

用php只能获取服务器端的时间&#xff0c;得用js获取客户端时间&#xff0c;然后生成对应的css文件内容。为了确保页面能正确显示&#xff0c;还得有个默认的css文件链接。示例代码如下&#xff1a;function DynamicLoad(){var Selfthis; //对象自身//功能&#xff1a;加载指定…

泛型的优势

假设需要一个两个整形变量交换的函数&#xff0c;我们很快就可以嗒嗒嗒嗒的敲出下面的 Swap 函数&#xff1a;void Swap(ref int lhs, ref int rhs){int temp lhs;lhs rhs;rhs temp;}随着项目进展&#xff0c;我们发现&#xff0c;需要用到 Swap 函数的不仅是整形,变量 还有…

老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记08...

day8课程内容&#xff1a;文件操作fopen(小重山,r,encodingutf8)     #以读的方式打开文件dataf.read()print(data)f.close() #关闭文件句柄fopen(小重山2,w,encodingutf8)    #以清空再写 的方式打开文件&#xff0c;这一步就将文件以前的内容清空了&#xff0c;如果…

php echo 后必须die,die 提示的消息都去哪了?

小弟新手&#xff1a;$fpfopen("./readme.txt","r") or die("不能打开该文件");想问下&#xff0c;如果打开失败&#xff0c;那么die 的这条消息输出到哪了啊&#xff1f;貌似打开失败界面也没有直接弹出这条消息&#xff1f;请问使用die这条消息…

BSTR、char* 和 CString 之间的转换 (转)

BSTR、char* 和 CString 之间的转换 (1) char*转换成CString 若将char*转换成CString&#xff0c;除了直接赋值外&#xff0c;还可使用CString::Format进行。例如&#xff1a; char chArray[] "This is a test"; char * p "This is a test"; 或 LPSTR …

python打开音频文件_Python处理音频文件的实用姿势

每天叫醒我的不是理想&#xff0c;是楼下广场舞的音乐。音乐是人类的通用语言&#xff0c;不分国界不分种族。抖音短视频爆火的关键因素之一&#xff0c;就是普通人也能便捷地使用BGM表达自我。从感性角度看&#xff0c;音乐可以有很多种解释&#xff0c;如&#xff1a;音乐是有…

java三路快排,java二路快排很慢

老师&#xff0c;以下是我二路快排的java代码public class quickSortTwoway {public quickSortTwoway() {};public static void quickSort(Integer[] arr) {__quickSort(arr, 0, arr.length - 1);}private static void __quickSort(Integer[] arr, int l, int r) {if(l > r)…

Web开发常出现的错误[个人收集]

获取DataGrid中的每行中的第一行的第一个textbox (有点老&#xff0c;但用的到) publicabstractclassHelper { publicclassConvert { publicstaticTextBox ToTextBox(Control control) { TextBox tb control asTextBox; …

系统分析师资料_如何成为一名数据分析师?

随着大数据的逐渐普及&#xff0c;数据分析越来越普遍应用到各个职能岗位&#xff0c;也就是说&#xff0c;不论你在哪个行业&#xff0c;都会需要数据分析技能。数据岗位的薪资水涨船高&#xff0c;成为目前最有潜力的职业选择之一。根据猎聘发布《猎聘2019年中国AI&大数据…

matlab中ode45如何设置,如何使用Matlab中的ode45修正赋值错误(ode45函数的第488行)

我正在写一个脚本ode45为了整合卫星在火星附近双曲线轨道上的运动方程.我需要整合地球上的整个通道:从SOI半径开始(576000km)向行星前进,然后穿过大气层直到卫星到达opposite“大气边界(设置在250km从表面)。当它接收到输入A时tspan比大约高200000秒(我需要大约400000秒),Matla…