Regex以获取字符后的字符串

本文关键字:字符串 字符 获取 Regex | 更新日期: 2023-09-27 17:53:46

我有A1234-111D890-222A456-333等字符串。。。如何使用regex获取-字符之后的所有内容右侧

Regex以获取字符后的字符串

Regex通过能够命名和提取匹配而大放异彩(用Regex行话命名匹配捕获组(。

在这里,我已经命名了模式中的两侧,一旦获得,只需从所需的一侧提取。

var data = "A1234-111";
var pattern = @"(?<Pre>[^-]+)-(?<Post>.+)";
var mtch = Regex.Match(data, pattern);
Console.WriteLine ("Pre is {0} and Post is {1}", mtch.Groups["Pre"], mtch.Groups["Post"]);
// Result
// Pre is A1234 and Post is 111

您可以使用regex

(?<=-)'d+

(?<=...)是一个后备。

用空字符串替换-之前的任何内容。

string input = " A1234-111";
input = Regex.Replace(input, @".*?-", "");

拆分两次可能更容易:

foreach (string s in myString.Split(','))
{
    string afterHyphen = s.Split('-')[1];
}

您其实并不需要regex,是吗?

List<string> result = input.Split(',')
    .Select(s => s.Split('-').Last())
    .ToList();

使用C#时,必须包含System.Text.RegularExpression库,然后运行匹配:

using System.Text.RegularExpressions;
...
  Regex rx = new Regex(@"[^'-]'-(.*)");
  string s = "A1234-111";
  Match m = rx.Match(s);
  System.Diagnostics.Debug.WriteLine("Match is " + m.Groups[1].Value);
...

我知道你问过Regex,但你可以对文本进行拆分,只要模式相同:

string[] parts = s.Split(new char[] { '-' });
System.Diagnostics.Debug.WriteLine("Split Match is " + parts[1]);

什么效果最好。:(

如果需要搜索整个字符串,请使用:

(?[A-Za-z]'d+'-('d+),)+

第一组不捕获逗号之间的项目,第二组捕获实际匹配您的数字。

如果您需要单独搜索逗号分隔的字符串,那么最好使用String.Split或:

[A-Za-z]'d+'-('d+)

您可以将[A-Za-z]'d替换为'w