正则表达式用于在最后一次斜杠后获取最后一个字符串并替换前两个字母

时间:2017-11-09 19:32:18

标签: c# regex

我有一个字符串ABC|DEF|XYZ|TT1234现在,我只想获得TT1234并用YY替换TT。

输入:ABC|DEF|XYZ|TT1234 输出:YY1234

我有一个表达式来获取最后一部分([^|]+$),但不确定下一步该做什么。

5 个答案:

答案 0 :(得分:1)

不确定问题是否最好用正则表达式解决,或者此正则表达式是否适用于所有输入,但在C#中,您可以使用Regex.Replace

        var input = "ABC|DEF|XYZ|TT1234";

        var reg = "([A-Z]{2})(?=[^|]+$)";

        var output = Regex.Replace(input, reg, "YY");

        Console.WriteLine(output);

        Console.ReadLine();

正则表达式的解释 -

([A-Z]{2})找到任意两个大写字母

(?=[^|]+$)负面展望不是|和行尾。我们使用负向前看因此这个位没有被捕获

答案 1 :(得分:0)

RegEx可用于查找您的重要部分,但替换是另一回事,您使用c#标记标记此问题,因此,我认为这可以帮助您(我使用的是Regex.Replace,但是简单的替换将完成工作):

        string input = "ABC|DEF|XYZ|TT1234";

        Regex regex = new Regex(@"([^|]+$)");
        Match match = regex.Match(input);
        if (match.Success)
        {
            //replace
            string output = Regex.Replace(match.Value, "TT", "YY");

            Console.WriteLine(output);
        }

        Console.Read();

答案 2 :(得分:0)

C#中的正则表达式

string input = "ABC|DEF|XYZ|TT1234";
Regex regex = new Regex(@"([^|]+$)");
string result = regex.Replace("TT", "YY");

认为这是你想要实现的目标。

答案 3 :(得分:0)

如果字符串是使用|构建的作为分隔符,为什么要使用正则表达式?

string input = "ABC|DEF|XYZ|TT1234";

var last = input.Split("|".ToCharArray()).Last()
var done = last.Replace("TT","YY");

(VS更新,无法验证语法)

答案 4 :(得分:0)

一种无需正则表达式的简单方法:

string input = "ABC|DEF|XYZ|TT1234";
string output = "YY" + input.Substring(input.LastIndexOf("TT") + 2);

或者最后一个字符可以包含字母:

string output = "YY" + input.Substring(input.LastIndexOf("|TT") + 3);