我花了4个小时在这上面,但我仍然不清楚这应该如何运作。 我想使用来自this链接的逻辑。我想改造
Some123Grouping TO GroupingSome123
我有3个部分,应该使用替换($ 1,$ 2,$ 3)更改订单 我还需要一些东西来改造
name@gmail.com TO name
我不清楚如何定义替换以及在我的情况下捕获的内容?
感谢您的帮助,我会继续欣赏它。
答案 0 :(得分:2)
$ 1,$ 2等指团体(即其声明外观的索引)。因此,您需要在捕获正则表达式中定义组。您可以使用括号来完成此操作。例如:
Regex.Replace("Some123Grouping", @"(Some)(123)(Grouping)", @"$3$1$2")
产生" GroupingSome123"。
请注意,为了更好的可读性,还可以命名组,然后按名称引用组。例如:
Regex.Replace("mr.smith@gmail.com", @"(?<name>.*)(@gmail.com)", @"${name}")
收益&#34; mr.smith&#34;。
顺便说一句,如果您正在寻找一般(非.NET特定但很棒)的Regexes介绍,我建议Regular-Expressions.info。答案 1 :(得分:1)
只需使用您的要求产量
Regex.Replace("name@gmail.com", @"(name)(@gmail.com)", @"$1")
但我怀疑你想要的更多是
Regex.Replace("name@gmail.com", @"(\w*)(@.*)", @"$1")
答案 2 :(得分:1)
如果我理解正确:
有文字的模式,其次是数字,然后是文字,如果这是正确的,则应符合您的模式:
string pattern = @"([A-Za-z]+)(\d+)([A-Za-z]+)";
下一步就是让小组出局:
Regex rx = new Regex(pattern);
var match = rx.Match(input);
然后您的结果可以通过两种方式获得,简短版本:
result = rx.Replace(input, "$3$1$2");
长版:
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string input = "Some123Grouping";
string pattern = @"([A-Za-z]+)(\d+)([A-Za-z]+)";
Regex rx = new Regex(pattern);
var match = rx.Match(input);
Console.WriteLine("{0} matches found in:\n {1}",
match.Groups.Count,
input);
var newInput = "";
for(int i= match.Groups.Count;i>0;i--){
newInput += match.Groups[i];
}
Console.WriteLine(newInput);
}
}
关于你的第二个问题,它似乎很简单:
var result ="name@gmail.com".Split('@')[0];