带有+(加号)和空格模式的正则表达式

时间:2011-10-01 06:42:40

标签: php regex word

我有以下句子

"my hooorrrr sssee strongggg"

我的正则表达式是:

"(h+o+r+s+e+) s+t+r+o+n+g+"

当句子为:

时,它才有效/匹配
"my hooorrrrsssee strongggg"

任何人都能提供帮助吗?

无论单词之间的空格如何,我都希望匹配。

example : "my h ooo rrr rss    se eee    stttro ngggg"

另一个问题是当某个字符被数字替换时,如下:

"my h 0o0 rrr rs555sss    se ee333    stttr0 ngggg"

a replaced by 4
b replaced by 8
s replaced by 5
i replaced by 1
o replaced by 0

任何人都能提供帮助吗?

由于

4 个答案:

答案 0 :(得分:5)

使用*(空格,星号)来允许可选空格。

(h[h ]*o[o ]*r[r ]*s[s ]*e[e ]*)s[s ]*t[t ]*r[r ]*o[o ]*n[n ]*g[g ]*

您可能还想考虑将任何空格与\s(例如包括标签)匹配,而不仅仅是空格。

要允许数字或字母使用字符类,例如[0o]

(h[h ]*[o0][o0 ]*r[r ]*[s5][s5 ]*[e3][e3 ]*)[s5][s5 ]*t[t ]*r[r ]*[o0][o0 ]*n[n ]*g[g ]*

答案 1 :(得分:1)

如果要匹配空格,则需要在正则表达式中包含该空格。 \s是匹配空白字符(即空格,制表符,换行符)的模式。

r+将匹配一个或多个r字符,但不会查找空格。

r+\s*匹配一个或多个r个字符,后跟零个或多个空白字符。

您可以从那里构建表达式的其余部分。

答案 2 :(得分:1)

更新2

根据您问题中的信息,您可以使用(更新以了解Tim Pietzcker指出的案例!):

[h][h ]*[o0][o 0]*[r][r ]*[s][s 5]*[e3][e 3]*[s5][s 5]*[t][t ]*[r][r ]*[o0][o 0]*[n][n ]*[g][g ]*

我只是意识到这使得答案与马克拜尔斯的答案相同!

答案 3 :(得分:1)

这匹配每个字母,后跟零个或多个相同的字母或空格

h[h ]*o[o ]*r[r ]*s[s ]*e[e ]*s[s ]*t[t ]*r[r ]*o[o ]*n[n ]*g[g ]*

使用您指定的数字...(e = 3,o = 0,s = 5)

h[h ]*[o0][o 0]*r[r ]*[s5][s 5]*e[e 3]*[s5][s 5]*t[t ]*r[r ]*[o0][o 0]*n[n ]*g[g ]*