正则表达式使用详解( 二 )



s:用于匹配单个空格符 , 包括tab键和换行符;

S:用于匹配除单个空格符之外的所有字符;

d:用于匹配从0到9的数字;

w:用于匹配字母 , 数字或下划线字符;

W:用于匹配所有与w不匹配的字符;

. :用于匹配除换行符之外的所有字符 。

(说明:我们可以把s和S以及w和W看作互为逆运算)

下面 , 我们就通过实例看一下如何在正则表达式中使用上述元字符 。

/s /

上述正则表达式可以用于匹配目标对象中的一个或多个空格字符 。

/d000/

如果我们手中有一份复杂的财务报表 , 那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项 。

除了我们以上所介绍的元字符之外 , 正则表达式中还具有另外一种较为独特的专用字符 , 即定位符 。定位符用于规定匹配模式在目标对象中的出现位置 。

较为常用的定位符包括: “^”, “$”, “b” 以及 “B” 。其中 , “^”定位符规定匹配模式必须出现在目标字符串的开头 , “$”定位符规定匹配模式必须出现在目标对象的结尾 , b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一 , 而“B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内 , 即匹配对象既不能作为目标字符串的开头 , 也不能作为目标字符串的结尾 。同样 , 我们也可以把“^”和“$”以及“b”和“B”看作是互为逆运算的两组定位符 。举例来说:

/^hell/

因为上述正则表达式中包含“^”定位符 , 所以可以与目标对象中以 “hell”, “hello”或 “hellhound”开头的字符串相匹配 。

/ar$/

因为上述正则表达式中包含“$”定位符 , 所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配 。

/bbom/

因为上述正则表达式模式以“b”定位符开头 , 所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配 。

/manb/

因为上述正则表达式模式以“b”定位符结尾 , 所以可以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配 。

为了能够方便用户更加灵活的设定匹配模式 , 正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符 。例如:

/[A-Z]/

上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配 。

/[a-z]/

上述正则表达式将会与从a到z范围内任何一个小写字母相匹配 。

/[0-9]/

上述正则表达式将会与从0到9范围内任何一个数字相匹配 。

/([a-z][A-Z][0-9]) /

上述正则表达式将会与任何由字母和数字组成的字符串 , 如 “aB0” 等相匹配 。这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()” 把字符串组合在一起 。“()”符号包含的内容必须同时出现在目标对象中 。因此 , 上述正则表达式将无法与诸如 “abc”等的字符串匹配 , 因为“abc”中的最后一个字符为字母而非数字 。

如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算 , 在多个不同的模式中任选一个进行匹配的话 , 可以使用管道符 “|” 。例如:

/to|too|2/

上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配 。

正则表达式中还有一个较为常用的运算符 , 即否定符 “[^]” 。与我们前文所介绍的定位符 “^” 不同 , 否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串 。例如:

/[^A-C]/

上述字符串将会与目标对象中除A , B , 和C之外的任何字符相匹配 。一般来说 , 当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外 , 或没有“[]”时 , 则应当被视做定位符 。

推荐阅读