Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RegEx来缩短字符串_Regex - Fatal编程技术网

RegEx来缩短字符串

RegEx来缩短字符串,regex,Regex,我需要一种方法来“缩写”一个句子。我想从每个单词中提取至少3个字母,并在元音或单词结尾处完成每个单词的缩写 例如,如果我有一个字符串“损益报告”,我想把它缩写为ProfLossRep 有人能推荐一个能帮我做到这一点的正则表达式吗 谢谢。这是正则表达式: /^([a-z]{3}).*?([aeiou]|(?:.$))/i 第一个捕获组返回前三个字母,下一个返回最接近的元音或最后一个字母 它正在运行。我不确定您是否可以仅使用regexp替换来实现这一点。你肯定能做的就是编写一个小程序来实现这一点。

我需要一种方法来“缩写”一个句子。我想从每个单词中提取至少3个字母,并在元音或单词结尾处完成每个单词的缩写

例如,如果我有一个字符串“损益报告”,我想把它缩写为ProfLossRep

有人能推荐一个能帮我做到这一点的正则表达式吗

谢谢。

这是正则表达式:

/^([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$]*

为什么这个问题被否决?这似乎是一个合理的问题。哪种语言?这总是与正则表达式问题相关。