RegEx来缩短字符串
我需要一种方法来“缩写”一个句子。我想从每个单词中提取至少3个字母,并在元音或单词结尾处完成每个单词的缩写 例如,如果我有一个字符串“损益报告”,我想把它缩写为ProfLossRep 有人能推荐一个能帮我做到这一点的正则表达式吗 谢谢。这是正则表达式:RegEx来缩短字符串,regex,Regex,我需要一种方法来“缩写”一个句子。我想从每个单词中提取至少3个字母,并在元音或单词结尾处完成每个单词的缩写 例如,如果我有一个字符串“损益报告”,我想把它缩写为ProfLossRep 有人能推荐一个能帮我做到这一点的正则表达式吗 谢谢。这是正则表达式: /^([a-z]{3}).*?([aeiou]|(?:.$))/i 第一个捕获组返回前三个字母,下一个返回最接近的元音或最后一个字母 它正在运行。我不确定您是否可以仅使用regexp替换来实现这一点。你肯定能做的就是编写一个小程序来实现这一点。
/^([a-z]{3}).*?([aeiou]|(?:.$))/i
第一个捕获组返回前三个字母,下一个返回最接近的元音或最后一个字母
它正在运行。我不确定您是否可以仅使用regexp替换来实现这一点。你肯定能做的就是编写一个小程序来实现这一点。下面是一个简单的Ruby单行程序:
p'损益报告'.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);
resultString=Regex.Replace(subjectString,
@“(?此正则表达式似乎起到了以下作用:
\b\w{3}[^aaeeyyuioo\w$]*为什么这个问题被否决?这似乎是一个合理的问题。哪种语言?这总是与正则表达式问题相关。