Regex以获取字符后的字符串
本文关键字:字符串 字符 获取 Regex | 更新日期: 2023-09-27 17:53:46
我有A1234-111
、D890-222
、A456-333
等字符串。。。如何使用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
。