如何指定“空格或string的结尾”和“空格或string的开始”?
您正在尝试模式匹配“成像stream”的成像。
你需要以下内容:
this is stackoverflow and it rocks [MATCH] stackoverflow is the best [MATCH] i love stackoverflow [MATCH] typostackoverflow rules [NO MATCH] i love stackoverflowtypo [NO MATCH]
我知道如何parsing出如果它有两个网站上的空间使用的stackoverflow:
/\s(statckoverflow)\s/
如果它在string的开头或结尾,也是一样的:
/^(stackoverflow)\s/ /\s(stackoverflow)$/
但是,如何指定“空格或string的结尾”和“空格或string的开始”?
您可以使用以下任何一项:
\b #A word break and will work for both spaces and end of lines. (^|\s) #the | means or. () is a caputuring group. /\b(stackoverflow)\b/
此外,如果您不想在比赛中包含空间,则可以使用后视/前进。
(?<=\s|^) #to look behind the match (stackoverflow) #the string you want. () optional (?=\s|$) #to look ahead.
(^|\s)
会匹配空格或string的开始和($|\s)
空格或string的结尾。 一起是:
(^|\s)stackoverflow($|\s)
这是我会用的:
(?<!\S)stackoverflow(?!\S)
换句话说,匹配“stackoverflow”如果它不是前面有一个非空白字符,并没有跟随一个非空白字符。
这比国际海事组织(IMO)要好一些,而不是像“空间或锚”这样的方法。
\b
在字边界匹配(没有真正匹配任何字符),所以下面应该做你想要的:
\bstackoverflow\b