preg-match - 正规表达式 如何指定"空格或者字符串结尾"和"字符串的空格或者开头"?

  显示原文与译文双语对照的内容
142 4

你正在尝试 Pattern 匹配的映像。

你需要以下内容:

 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(statckoverflow)s/

如果它位于字符串的开头或者结尾,则为:

/^(stackoverflow)s/
/s(stackoverflow)$/

但是,如何指定"空格或者字符串结尾"和"字符串的空格或者开头"?

时间:原作者:0个回答

92 0

你可以使用以下任意一种:

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/

此外,如果不希望在匹配中包含空格,则可以使用回溯/aheads 。

(?<=s|^) #to look behind the match
(stackoverflow) #the string you want. () optional
(?=s|$) #to look ahead.
原作者:
143 0

(^|s) 将匹配空格或者字符串的开始位置或者字符串的空格或者字符串结尾。它是:

(^|s)stackoverflow($|s)
原作者:
57 2

以下是我将使用的内容:

 (?<!S)stackoverflow(?!S)

换句话说,如果"stackoverflow"不是 ,前面是一个非空白字符,而不是字符,后面是非空白字符。

这比方法更简洁,并且不假定字符串开始和结束,比如 b 方法的单词字符,如方法。

原作者:
...