none
关于正则表达式 ^$和\b RRS feed

  • 问题

  • ^grep$   与   \bgrep\b有什么区别?

    为什么对象都是一个文本==>a bc         (箭头不算,a与b之间有个空格)

    \ba\b能找得到字符a,但^a$找不到?

    还有,假如有一个文本为:

    apple(回车换行)

    bear

    ^apple$不能找到字符串apple?

    2012年6月4日 7:02

答案

  • ^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。

    $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。

    \b 单词的开头或结尾,也就是单词的分界处,只匹配一个位置,例如:\ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)

    对于你的所说的^a$匹配以字母a开头和以字母结尾的单词。然而\ba\b匹配以字母a开头的字符, 所以对于文本a bc,用\ba\b可以得到a, 但是用^a$当然找不到a,其实只需要用^a就可以找到a了, 对于^apple$找不到也是一样道理。

    关于正则表达式的语法可以查看这里 :http://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.100).aspx


    Tommy Li
    MSDN Community Support | Feedback to us Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2012年6月5日 7:28

全部回复

  • ^查找一行的起点,$查找一行的结束(不设置SingleLine的情况下)

    \b匹配一个单词的开始和结束(分界处)

    这三个都是元字符,匹配位置而不是字符


    共同努力,共同提高
    kaedei#live.cn My BLOG



    • 已编辑 Kaedei 2012年6月7日 0:48
    2012年6月5日 1:04
  • ^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。

    $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。

    \b 单词的开头或结尾,也就是单词的分界处,只匹配一个位置,例如:\ba\w*\b匹配以字母a开头的单词——先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)

    对于你的所说的^a$匹配以字母a开头和以字母结尾的单词。然而\ba\b匹配以字母a开头的字符, 所以对于文本a bc,用\ba\b可以得到a, 但是用^a$当然找不到a,其实只需要用^a就可以找到a了, 对于^apple$找不到也是一样道理。

    关于正则表达式的语法可以查看这里 :http://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.100).aspx


    Tommy Li
    MSDN Community Support | Feedback to us Please remember to mark the replies as answers if they help and unmark them if they provide no help.


    2012年6月5日 7:28