正则表达式(RUNOOB学习笔记)
一、前言(由QT获取路径想到的)正则表达式在模糊查找中应用比较多。Lunais在学习QT时想获取程序的根目录时遇到了这个问题。eg: argv[0]: C:\abc\xyz.exe,然后从中取出 C:\abc\ 就是程序的根目录。使用QT自带的函数QCoreApplication::applicationDirPath()就可以很方便的得到C:\abc,(注意此处没有"\")然而这种用法在mac操作系统下可能会出错。考虑到跨平台,此处使用QString ztyPath = QString::fromLocal8Bit(argv[0]);那么ztyPath就是C:\abc\xyz.exe那么问题来了,怎么获取根目录C:\abc\呢?通用的做法是根据文件名的特点删除路径中的文件名。此处,Lunais想到了正则表达式。二、简单的正则表达式通配符:?和 *?用来匹配文件名中的单个字符;*用来匹配文件名中的 (零个) 或 (多个) 字符。三、why RegExp引用RUNOOB的话:典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。通过使用正则表达式,可以:1、测试字符串内的模式。例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。2、替换文本。可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。3、基于模式匹配从字符串中提取子字符串。可以查找文档内或输入域内特定的文本。例如,您可能需要搜索整个网站,删除过时的材料,以及替换某些 HTML 格式标记。在这种情况下,可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后,可以使用正则表达式来搜索和替换标记。未完待续。。。