用零宽度断言匹配字符串中的特定位置
2013-04-01 15:42
148 查看
1. 用\b判断单词边界
注意:在写正则表达式时,如果将\w与\s或者\W 与\S连用,就有可能出现问题。如果一定要用,至少先检查仔细
如果不确定\b和\B会在何处匹配,试着用替换操作将这些地方标出来:
2.用^或\A匹配起始位置
^通常用来匹配字符串的起始位置。 许多人误以为这是“行起始”锚点。
多行模式下,如果只匹配整个字符串的起始位置,可以用\A定位。
3.用$或\z匹配结束的位置
$通常用于匹配字符串结束位置,即便此处有换行符也能匹配:
如果删除字符串里的换行符,它依然能匹配。
Perl 有个专门用于匹配字串末位的锚位操作符\z。
注意:在写正则表达式时,如果将\w与\s或者\W 与\S连用,就有可能出现问题。如果一定要用,至少先检查仔细
my ($user,$tty) = /(\S+)\s+(\S+)/; #匹配who输出内容提取用户名陈和终端名称
如果不确定\b和\B会在何处匹配,试着用替换操作将这些地方标出来:
my $text = q(What's a "word" boundary?); (my $btext = $text) =~ s/\b/:/g; (my $Btext = $text) =~s/\B/:/g;
2.用^或\A匹配起始位置
^通常用来匹配字符串的起始位置。 许多人误以为这是“行起始”锚点。
my $string = << 'HERE' ; This is a line That is another line And a final line HERE #每行起始位置的单词 my (@matches) = $string =~ m/^(\w+)/mg;
多行模式下,如果只匹配整个字符串的起始位置,可以用\A定位。
3.用$或\z匹配结束的位置
$通常用于匹配字符串结束位置,即便此处有换行符也能匹配:
if ( "some text\n" =~ /text$/ ) { print "Matched 'text'\n"; }
如果删除字符串里的换行符,它依然能匹配。
Perl 有个专门用于匹配字串末位的锚位操作符\z。
if ("some text\n" =~ /text\z/ ) { #失败 print "Matched 'text'\n"; }
相关文章推荐
- 字符串查找匹配位置-在输入的字符串中查找特定字符,查到返回位置和个数
- 【分享一个SQL函数】在SQL脚本中匹配使用特定分隔符分隔字符串的位置
- Linux下搜索指定目录下文件中特定字符串并高亮显示匹配关键词
- 正则表达式-匹配txt中的特定字符串
- 删除特定位置前面的字符串c++代码实例及运行结果
- mysql:substr() 取出字符串中的某个特定位置的字符
- 【正则】匹配头尾,并且中间不能有特定字符串
- Matlab在字符串数组中找到特定字符串的位置
- 正则表达式匹配不包含特殊子串的字符串(零宽断言的使用)
- 删除特定位置前面的字符串c++代码实例及运行结果
- 利用sed命令在匹配某特定字符串的行尾添加字符串
- 正则表达式-获取匹配到第一个字符出现的位置的字符串
- 删除特定位置前面的字符串c++代码实例及运行结果
- 获取特定字符串在 字符串中出现的所有位置
- python——巧用正则寻找字符串中的特定字符的位置
- leetcode_28. Implement strStr() 字符串模式匹配,返回匹配的首字符位置
- 【C语言】自己编写程序实现strrchr函数,即在给定字符串中找特定的字符并返回最后出现的位置
- MySQL中特定格式的字符串部分完全匹配查询
- (转)使用零宽断言来匹配不包含连续字符串的行
- 正则表达式匹配不包含特定字符串解决匹配溢出问题