我需要一种方法来"缩写"一句话。我想从每个单词中取出至少3个字母,并在元音或该单词的结尾处完成缩写每个单词。
例如,如果我有一个字符串"利润损失报告",我想将其缩写为ProfLossRep
有人可以推荐一个能为我做这个的正则表达式吗?
感谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
我不确定只用正则表达式替换就可以做到这一点。你绝对可以做的是编写一个可以做到这一点的小程序。这是Ruby中的一个简单的单行程序:
p 'Profit Loss Report'.split.map { |i| i[0, 4].gsub /[aeio]*$/, '' }.join
输出:
"ProfLossRep"
答案 2 :(得分:0)
这是.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);
答案 3 :(得分:0)
这个正则表达似乎可以解决问题:
\ B \瓦特{3} [^ aAeEyYuUiIoO \ W $] *