正则表达式除去第一个和最后一个字符串之外的字符串中的元音

我试图从字符串中除去第一个和最后一个字符的所有元音。 我用2个表达式尝试了两种方法,但徒劳无益。 我在下面描述了它们。 有人有这样的正则表达式吗?

例如

原始字符串 - 来源= apeaple

正则表达式后 - source_modified =苹果(这是预期的)

我尝试了表达式([a-zA-Z])[aeiouAEIOU]([a-zA-Z])但是这个表达式也删除了重复的字符。 所以,当我应用上述表达式时发生以下情况

使用的代码 -

Regex reg = new Regex("([a-zA-Z])[aeiouAEIOU]([a-zA-Z])");
string source_modified = reg.Replace(source, "");

原始字符串 - 来源= apeaple

在代码执行后 - source_modified = aple(重复删除字符)

使用的代码 - string source_modified = Regex.Replace(source, "([a-zA-Z])[aeiouAEIOU]([a-zA-Z])", "$1" + "$2");

原始字符串 - 来源= apeaple

在代码执行后 - source_modified = apaple(只有1个元音被删除)

我也尝试过([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])但这只是删除了1个元音而不是全部。 所以,当我应用上述表达式时发生以下情况

使用的代码 -

Regex reg = new Regex("([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])");
string source_modified = reg.Replace(source, "");

原始字符串 - 来源= apeaple

在代码执行后 - source_modified =“”(所有字符都被删除)

使用的代码 - string source_modified = Regex.Replace(source, "([a-zA-Z])[aeiouAEIOU]*([a-zA-Z])", "$1" + "$2");

原始字符串 - 来源= apeaple

代码执行后 - source_modified = apeple

请帮忙! 提前致谢!

问候,

萨马


你需要一些像这样的环视

(?<!^)[aouieyAOUIEY](?!$)

C#支持它,它非常强大

string resultString = null;
try {
    resultString = Regex.Replace(subjectString, "(?<!^)[aeui](?!$)", "");
} catch (ArgumentException ex) {
    // Syntax error in the regular expression
}

更新1

TWRCole告诉我,在英语中有一个特殊的规则(“这不适用于像”Anyanka“这样的内部”y“被用作辅音的词)”)

以下更改应该使用负向视图技术来做到这一点:

(?<!^)([aouie]|y(?![aouie]))(?!$)

这次启用匹配大小写不敏感的正则表达式修饰符,它使正则表达式比原始的更简单

如果ay后面跟着另一个y,那么仍然意味着y是一个辅音(euh ...是否有这样一个词),因此不应该消失,而且必须列在最后一个字符类中:

(?<!^)([aouie]|y(?![aouiey]))(?!$)

我再说一遍,我使用C#作为我的正则表达式,对查找技术有很好的支持。


如果是这样,为什么不删除第一个和最后一个字符,删除元音,然后再次缝合?

string sWord = "apeaple";
char cFirst = sWord[0], cLast = sWord[sWord.length-1];

sWord = sWord.substring(1, sWord.length -2);

sWord = cFirst.ToString() + 
        Regex.Replace(sWord , "[aouiyeAOUIYE]", String.Empty) + 
        cLast.ToString();

您需要用至少一个字符开始字符串,找到一个元音,然后用至少一个字符结束字符串。 尝试:

(.+)[aeiouAEIOU](.+)
链接地址: http://www.djcxy.com/p/92827.html

上一篇: regex to remove vowels from string except first and last charаcter

下一篇: Using Regex to edit a string in C#