我有像A1234-111,D890-222,A456-333等字符串...... 如何使用正则表达式获取“ - ”字符后的所有内容(右侧)。
提前谢谢。
答案 0 :(得分:2)
正则表达式通过能够命名和提取匹配(在正则表达式术语中命名匹配捕获组)而闪耀。
在这里,我已经在模式中命名了两个边,一旦获得,只需从所需的那个中提取。
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
答案 1 :(得分:0)
使用空字符串替换-
之前的任何内容。
string input = " A1234-111";
input = Regex.Replace(input, @".*?-", "");
答案 2 :(得分:0)
您可以使用正则表达式
(?<=-)\d+
(?<=...)
是一个外观。
答案 3 :(得分:0)
分割两次可能更容易:
foreach (string s in myString.Split(','))
{
string afterHyphen = s.Split('-')[1];
}
答案 4 :(得分:0)
你真的不需要正则表达式,是吗?
List<string> result = input.Split(',')
.Select(s => s.Split('-').Last())
.ToList();
答案 5 :(得分:0)
如果您需要搜索整个字符串,请使用:
(?[A-Za-z]\d+\-(\d+),)+
第一组是非捕获用于在逗号之间对项目进行分组,第二组正在捕获以实际匹配您的数字。
如果您需要单独搜索由逗号分隔的字符串,那么最好使用String.Split,或者:
[A-Za-z]\d+\-(\d+)
您可以将[A-Za-z]\d
替换为\w
。
答案 6 :(得分:0)
使用C#,您必须包含System.Text.RegularExpressions库,然后运行匹配:
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]);
无论什么效果最好。 :)