First:
一些元字符则不会被作为普通字符来处理,它们包括
. ^ $ * + ? { [ ] \ | ( )
。
.
会匹配除了换行以外的任何字符;\w
等价于[a-zA-Z0-9_]
会匹配单一字母、数字或下划线字符,而\W
则会匹配任何非字母、数字和下划线的单一字符;\b
会匹配“单一字母、数字或下划线字符”和“任何非字母、数字和下划线的单一字符”之间的边界。\s
等价于[ \n\r\t\f]
,会匹配一个空白字符(包括空格、换行、返回、制表符、表格),\S
则匹配所有非空白字符;\t \n \r
依次用于匹配制表符、换行符、返回符;\d
等价于[0-9]
用于匹配十进制表示的的数字
^
作为开始标记,$
作为结束标记,分别用于标记一个字符串的开始和结束的位置。\
用于一些字符的转义,比如\.
表示对于一个真实点字符的匹配,\\
表示对于一个真实反斜杠字符的匹配等。如果你对不是很确定一些字符是否需要进行转义才能匹配,你大可都加上斜杠,比如对于@
你写成\@
是一定没有问题的。
Second:
正则表达式调试建议:
1、你可以设计一系列放在列表里的字符串用于调试,其中一部分是可以产生符合正则表达式的结果的,另一部分是产生不符合正则表达式的结果的。请注意,在设计这些字符串时,尽可能让他们的特征表现的更为不同一些,便于覆盖到我们可能出现的各种正则表达式没有写对的错误。例如,对于一个存在+
的正则表达式,我们可以考虑选用一个符合*
但是不符合+
的字符串。
2、然后你可以写一个循环,依次验证每个列表内的字符串是否符合指定的某个正则表达式并且和你设定的存在另一个列表内的预期结果进行比对,如果出现了不一致的情况,则你应该考虑看看你的正则表达式是不是还需要修改,如果结果基本一致,那么我们可以考虑进一步修改我们用于调试的字符串或添加新的字符串。