我需要一个正则表达式脚本来删除这些特定单词的双重复.如果出现这些字符,请将其替换为单个.
/[\s.'-,{2,0}]
Run Code Online (Sandbox Code Playgroud)
这些是如果他们来了我需要用同一个字符替换它的角色.
amp*_*ine 15
这是你正在寻找的正则表达式吗?
/([\s.'-,])\1+/
Run Code Online (Sandbox Code Playgroud)
好的,现在它将匹配它.如果您使用的是Perl,则可以使用以下表达式替换它:
s/([\s.'-,])\1+/$1/g
Run Code Online (Sandbox Code Playgroud)
编辑:如果您正在使用:ahem:PHP,那么您将使用以下语法:
$out = preg_replace('/([\s.\'-,])\1+/', '$1', $in);
Run Code Online (Sandbox Code Playgroud)
该()
组匹配字符,\1
表示它在括号中匹配的相同内容至少再次出现.在替换中,$1
指的是第一组括号中的匹配.
注意:这是Perl兼容的正则表达式(PCRE)语法.
从perlretut手册页:
匹配重复
上一节中的示例显示了令人讨厌的弱点.我们只匹配3个字母的单词,或4个字母或更少的单词.我们希望能够匹配单词或更常见的任意长度的字符串,而无需写出繁琐的替代方案\w\w\w\w|\w\w\w|\w\w|\w
.
这也正是量词元字符的问题?
,*
,+
,和{}
是为创建.它们允许我们划分我们认为匹配的正则表达式的一部分的重复次数.量词放在我们想要指定的字符,字符类或分组之后.它们具有以下含义:
a?
意思是:匹配'a'1或0次
a*
表示:匹配'a'0次或更多次,即任意次
a+
表示:匹配'a'1次或更多次,即至少一次
a{n,m}
意思是:匹配至少"n"次,但不超过"m"次.
a{n,}
意思是:匹配至少"n"次或更多次
a{n}
意思是:完全匹配"n"次