好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

正则表达式语言元素.doc

26页
  • 卖家[上传人]:kms****20
  • 文档编号:39636657
  • 上传时间:2018-05-18
  • 文档格式:DOC
  • 文档大小:243KB
  • / 26 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 正 则 表 达 式 .NET Framework SDK 提供了大量的正则表达式工具,使您能够高效地创建、比较和修改字符串,以及迅速地分 析大量文本和数据以搜索、移除和替换文本模式下面详细介绍可用于定义正则表达式的字符、运算符和构造 字符转义 大多数重要的正则表达式语言运算符都是非转义的单个字符转义符 \(单个反斜杠)通知正则表达式分析器反斜杠 后面的字符不是运算符例如,分析器将星号 (*) 视为重复限定符,而将后跟星号的反斜杠 (\*) 视为 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 字符匹配 注意:.NET Framework 不支持用于指定 Unicode 的 Perl 5 字符转义Perl 5 字符转义的格式是 \x{####…},其中 “####…”是十六进制数字的序列应改为使用本行中描述的 .NET Framework 字符转义 转义符【\】】 ,说明:在后面带有不识别为转义符的字符时,与该字符匹配例如,\* 与 \x2A 相同。

      注意:转义字符 \b 是一个特例在正则表达式中,\b 表示单词边界(在 \w 和 \W 之间) ,不过,在 [] 字符类中, \b 表示退格符在替换模式中,\b 始终表示退格符 替换替换 只在替换模式中允许替换对于正则表达式中的类似功能,使用后向引用(如 \1) 有关后向引用的详细信息,请参 见反向引用和后向引用构造 字符转义和替换是在替换模式中识别的唯一的特殊构造下面几部分描述的所有语法构造只允许出现在正则表达式中; 替换模式中不识别它们例如,替换模式 a*${txt}b 会插入字符串“a*” ,该字符串后跟按 txt 捕获组匹配的子字符串,该 子字符串后跟字符串“b” (如果有) 在替换模式中,* 字符不会识别为元字符与此类似,在正则表达式匹配模式中不识 别 $ 模式在正则表达式中,$ 指定字符串的结尾 下面显示如何定义命名并编号的替换模式 字符【$ 数字】 ,说明:替换按组号 number(十进制)匹配的最后一个子字符串 字符【${ name }】 ,说明:替换由 (? ) 组匹配的最后一个子字符串 字符【$$】 ,说明:替换单个“$”字符 字符【$ /\w+/ 模式指定匹配以下一个或多个任意字符:A-Z、a-z、0-9 和下划线字符。

      模式之后的 g(全局)标志,指示搜索操 作应查找该模式的所有匹配项,而不仅仅是第一个匹配项 还可以使用以下 JScript 替换语法 var re = new RegExp(“\\w+“, “g“); 要检索每个匹配项,exec 方法 将从 lastIndex 位置继续搜索,直到返回 Null function SearchGlobal() {var src = “The quick brown fox jumps over the lazy dog.“;// Create a regular expression pattern that has a global flag.var re = /\w+/g;var result;// Get the first match.result = re.exec(src);while (result != null){print (result.index + “-“ + result.lastIndex + “\t“ + result[0]);// Get the next match.// Because the global flag is set, the search starts at the// position of lastIndex.result = re.exec(src);}// Output:// 0-3 The// 4-9 quick// 10-15 brown// 16-19 fox// 20-25 jumps// 26-30 over// 31-34 the// 35-39 lazy// 40-43 dog } 以下示例仅查找第一个匹配项。

      因为未设置全局 (g) 标志,搜索操作将从搜索字符串的起始位置开始 function SearchNonGlobal() {var src = “The quick brown fox jumps over the lazy dog.“;// Create a regular expression that does not have// a global flag.var re = /\w+/;// Get the first match.// Because the global flag is not set, the search starts// from the beginning of the string.var result = re.exec(src);if (result == null)print (“not found“);else{ print (result.index + “-“ + result.lastIndex + “\t“ + result[0]);}// Output:// 0-3 The } 替换 --------------------------------------------------------------------------------在以下示例中, “a”将替换“the”的匹配项。

      但不会替换实例“The” ,因为正则表达式标志中未包含 i(忽略大小写)标 志 该示例使用 replace 方法 function ReplaceGlobal() {var src = “The batter hit the ball with the bat “;src += “and the fielder caught the ball with the glove.“;// Replace “the“ with “a“.var re = /the/g;var result = src.replace(re, “a“);print(result);// Output:// The batter hit a ball with a bat and a fielder caught a ball with a glove. } 提取子字符串 --------------------------------------------------------------------------------在正则表达式模式中放置括号以创建可存储以供将来使用的子匹配项 在以下示例中,该模式包含三个子匹配项。

      子匹配字符串与每个匹配项一起显示 exec 方法 将返回一个数组 数组元素 0 包含了完整的匹配项,而元素 1 到 n 包含子匹配项 function SearchWithSubmatches() {var result;var src = “Please send mail to george@ and someone@. Thanks!“;// Create a regular expression to search for an e-mail address.// Include the global flag.// (More sophisticated RegExp patterns are available for// matching an e-mail address.)var re = /(\w+)@(\w+)\.(\w+)/g;// Get the first match.result = re.exec(src);while (result != null){print (“e-mail address: “ + result[0]);// Get the submatched parts of the address.print (“user name: “ + result[1]);print (“host name: “ + result[2]);print (“top-level domain: “ + result[3]);print (““);// Get the next match.result = re.exec(src);}// Output:// e-mail address: george@ user name: george// host name: contoso// top-level domain: com// e-mail address: someone@ user name: someone// host name: example// top-level domain: com } Flags --------------------------------------------------------------------------------在 JScript 正则表达式 /abc/gim 中,g 指示全局标志、i 指示忽略大小写标志,而 m 指示多行标志。

      下表显示了允许的标志 JScript 标志 如果标志存在 g 查找搜索字符串中该模式的所有匹配项,而不仅仅是第一个匹配项 i 搜索不区分大小写 m ^ 匹配 \n 或 \r 之后的位置,而 $ 匹配 \n 或 \r 之前的位置 无论标志是否存在,^ 均匹配搜索字符串开头的位置,而 $ 均匹配搜索字符串结尾的位置 附加功能 --------------------------------------------------------------------------------还可以使用以下附加编程功能 功能 说明 compile 方法 (Visual Studio - JScript) 将正则表达式编译为内部格式,从而更快地执行 test 方法 测试搜索字符串内是否存在模式 search 方法 返回首个匹配项的位置 正则表达式语法 Visual Studio 2010 其他版本 Visual Studio 2008 Visual Studio 2005 5(共 7)对本文的评价是有帮助 - 评价此主题 “正则表达式”描述在搜索文本。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.