正则表达式不会替换所有请求的字符

时间:2011-11-04 15:38:08

标签: regex

目前,如果要操作的字符串是abXYabcXYZ,我想要删除所有不是“abc”的东西。我的正则表达式命令是这样的:

[^abc]

返回ab ++ abc +++,当我需要返回++++ abc +++时。如果我使用相同的字符串来操作,但只替换不是“ab”的任何东西,我会得到ab ++ ab ++++,这是正确的。我如何做到这一点,以便第一次测试不会在ab中添加,当它缺少c?

1 个答案:

答案 0 :(得分:0)

正如NullUserExceptionఠ_ఠ所解释的那样,正则表达式[^ abc]表示任何不是abc的单个字符。

使用此正则表达式在ab++abc+++上执行替换只会将++是[^ abc])替换为+(我认为您正在替换[ ^ abc]到+)导致字符串保持不变。

至于第二种情况,我想你想要使用正则表达式[^ ab],它将匹配字符c+并得到结果ab++ab++++

这解释了为什么你有这个。我真的不知道是否有任何正则表达式与\w+匹配,而不是像abc那样的特定字符串。在某些情况下,您可以将abc替换为另一个不是%等字符的字符串,并将所有\w替换为+,然后替换{ {1}}返回%

希望它有用。