正则表达式替换无效的单词

时间:2011-05-26 11:43:04

标签: regex

我有这句话,我使用正则表达式将"merda""merdas"替换为---

"merda vamerda e mais mmmerda? a merdaaa lol merda, namerda m e r d a mesmo merda"

这是使用正则表达式:

m{1,}e{1,}r{1,}d{1,}a{1,}s{1,}|m{1,}e{1,}r{1,}d{1,}a{1,}

这就是结果:

"--- va --- e mais --- ? a --- lol --- , na --- m e r d a mesmo ---"

此处有3个错误,vamerdanamerda不应替换,并且不会替换m e r d a

你能帮我吗?

3 个答案:

答案 0 :(得分:5)

怎么样:

/\bm+\s*e+\s*r+\s*d+\s*a+\s*s*\b/

<强>解释

\b       : word boundary
m+       : matches 1 or more m
\s*      : matches 0 or more spaces
...   same explanation for other letters (e,r,d,a)
s*       : matches 0 or more s
\b       : word boundary

这将匹配给定示例中的所有预期组合。

修改

根据您的评论,您可以通过将\s*[\s_]*交换为\bm+[\s_]*e+[\s_]* and so on ... 来修改正则表达式:

\bm+[^a-z]* ...

甚至是:

{{1}}

答案 1 :(得分:-1)

尝试将正则表达式放在Rubular

当您修改正则表达式时,它会为您提供实时匹配结果。

以下是Rubular permalink

中表达式的链接

答案 2 :(得分:-1)

试试这个:

/\Amerda\s+|\smerda,|\smerda\z|\s+merdas\s+|m\se\sr\sd\sa\s/