假设你正在尝试模式匹配"stackoverflow“。
您需要以下内容:
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]我知道如何解析出stackoverflow,如果它在两个站点上都有空格,使用:
/\s(stackoverflow)\s/如果它位于字符串的开头或结尾,则相同:
/^(stackoverflow)\s/
/\s(stackoverflow)$/但是如何使用正则表达式指定"space or end of string“和"space or start of string”呢?
发布于 2011-07-16 05:32:57
您可以使用以下任一选项:
\b #A word break and will work for both spaces and end of lines.
(^|\s) #the | means or. () is a capturing group.
/\b(stackoverflow)\b/另外,如果你不想在匹配中包含空格,你可以使用lookbehind/ahead。
(?<=\s|^) #to look behind the match
(stackoverflow) #the string you want. () optional
(?=\s|$) #to look ahead.发布于 2011-07-16 05:28:41
(^|\s)将匹配空格或字符串开头,而($|\s)将匹配空格或字符串结尾。加在一起就是:
(^|\s)stackoverflow($|\s)发布于 2011-07-16 05:38:40
下面是我要用到的:
(?<!\S)stackoverflow(?!\S)换句话说,如果"stackoverflow“前面没有非空格字符,后面也没有非空格字符,则匹配它。
这比“空格或锚点”方法更简洁(IMO),并且它不像\b方法那样假设字符串以单词字符开始和结束。
https://stackoverflow.com/questions/6713310
复制相似问题