我需要一种“缩写”句子的方法。我想从每个单词中取出至少3个字母,并且在元音或该单词的末尾缩写每个单词。RegEx缩短字符串
举例来说,如果我有一个字符串“损益表报告”,我想它简称为ProfLossRep
有人可以推荐一个正则表达式会为我做到这一点?
谢谢。
我需要一种“缩写”句子的方法。我想从每个单词中取出至少3个字母,并且在元音或该单词的末尾缩写每个单词。RegEx缩短字符串
举例来说,如果我有一个字符串“损益表报告”,我想它简称为ProfLossRep
有人可以推荐一个正则表达式会为我做到这一点?
谢谢。
此正则表达式似乎做的伎俩:
\ b \ w {3} [^ aEeYYuUiIoO \ W $] *
我不确定你只用正则表达式替换就能做到这一点。你绝对可以做的是编写一个小程序来做到这一点。这里有一个简单的一行在Ruby中:
p 'Profit Loss Report'.split.map { |i| i[0, 4].gsub /[aeio]*$/, '' }.join
输出:
"ProfLossRep"
下面是.NET解决方案:
resultString = Regex.Replace(subjectString,
@"(?<= # Start at a position after...
\b # the start of a word
\p{L}{2,} # followed by at least two letters (any letters)
[^\P{L}aeiou] # and one letter that isn't a vowel
) # End of lookbehind
(?: # Then match...
[aeiou] # a vowel
\p{L}* # plus any additional letters
)? # if present.
\s* # Match any trailing whitespace",
"", RegexOptions.IgnorePatternWhitespace);
为什么这个问题得到了降低?这似乎是一个合理的问题。 –
哪种语言?这对于正则表达式问题总是相关的。 –