我正在尝试从一个字符串中删除除第一个和最后一个字符以外的所有元音字母。我已经试过了两种表达式和两种方法,但都失败了。我在下面描述了它们。有没有人有这个问题的正则表达式?
例如:
原始字符串 -- source = apeaple 正则表达式后 -- source_modified = apple (这就是预期的结果)
我尝试了表达式 ([a-zA-Z])[aeiouAEIOU]([a-zA-Z]),但是这个表达式也会去掉重复字符。所以当我应用上面的表达式时,以下情况发生:
使用的代码 --
Regex reg = new Regex("([a-zA-Z])[aeiouAEIOU]([a-zA-Z])"); string source_modified = reg.Replace(source, "");
原始字符串 -- source = apeaple 代码执行后 -- source_modified = aple(重复字符被删除)
我还尝试了 ([a-zA-Z])[aeiouAEIOU]*([a-zA-Z]),但这只会删除一个元音字母而不是所有元音字母。所以当我应用上述表达式时,以下情况发生:
使用的代码 --
Regex reg = new Regex("([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])"); string source_modified = reg.Replace(source, "");
原始字符串 -- source = apeaple 代码执行后 -- source_modified = ""(所有字符都被删除)
我还尝试了 string source_modified = Regex.Replace(source, "([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])", "$1" + "$2");,但这只会删除一个元音字母而不是所有元音字母。所以当我应用上述表达式时,以下情况发生:
使用的代码 --
string source_modified = Regex.Replace(source, "([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])", "$1" + "$2");
原始字符串 -- source = apeaple 代码执行后 -- source_modified = apeple
例如:
原始字符串 -- source = apeaple 正则表达式后 -- source_modified = apple (这就是预期的结果)
我尝试了表达式 ([a-zA-Z])[aeiouAEIOU]([a-zA-Z]),但是这个表达式也会去掉重复字符。所以当我应用上面的表达式时,以下情况发生:
使用的代码 --
Regex reg = new Regex("([a-zA-Z])[aeiouAEIOU]([a-zA-Z])"); string source_modified = reg.Replace(source, "");
原始字符串 -- source = apeaple 代码执行后 -- source_modified = aple(重复字符被删除)
我还尝试了 ([a-zA-Z])[aeiouAEIOU]*([a-zA-Z]),但这只会删除一个元音字母而不是所有元音字母。所以当我应用上述表达式时,以下情况发生:
使用的代码 --
Regex reg = new Regex("([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])"); string source_modified = reg.Replace(source, "");
原始字符串 -- source = apeaple 代码执行后 -- source_modified = ""(所有字符都被删除)
我还尝试了 string source_modified = Regex.Replace(source, "([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])", "$1" + "$2");,但这只会删除一个元音字母而不是所有元音字母。所以当我应用上述表达式时,以下情况发生:
使用的代码 --
string source_modified = Regex.Replace(source, "([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])", "$1" + "$2");
原始字符串 -- source = apeaple 代码执行后 -- source_modified = apeple
([a-zA-Z])[aeiouAEIOU]([a-zA-Z])
没有删除双字母,但却删除了元音字母以及它前后的字母(这是您正在匹配并用空值替换的内容)。这导致删除了两个元音字母以及其中一个P,但与重复无关。 - Chris