我有一个这样的字符串:
X LIMITED COMPANY(52100000/58447000)
我想单独提取 X LIMITED COMPANY , 52100000 和 58447000 。
我正在提取 X LIMITED COMPANY :
companyName = Regex.Match(mystring4, @"[a-zA-Z\s]+").Value.Trim();
但是我坚持提取数字,在示例中它们可以是1,2或大数字。你能告诉我如何提取这些数字吗?感谢。
答案 0 :(得分:1)
尝试使用替代|
(或)的正则表达式:
[\w-[\d]][\w\s-[\d]]+)
([0-9]+)
E.g。
string mystring4 = @"AKASYA CAM SANAYİ VE TİCARET LİMİTED ŞİRKETİ(52100000 / 58447000)";
string[] values = Regex
.Matches(mystring4, @"([\w-[\d]][\w\s-[\d]]+)|([0-9]+)")
.OfType<Match>()
.Select(match => match.Value.Trim())
.ToArray();
测试
// X LIMITED COMPANY
// 52100000
// 58447000
Console.Write(string.Join(Environment.NewLine, values));
我建议将初始模式[a-zA-Z\s]+
更改为[a-zA-Z][a-zA-Z\s]+
,以便跳过仅包含分隔符的匹配项(例如" "
)
答案 1 :(得分:1)
尝试使用命名组:
var s = "X LIMITED COMPANY (52100000 / 58447000)";
var regex = new Regex(@"(?<CompanyName>[^\(]+)\((?<Num1>\d+)\s*/\s*(?<Num2>\d+)\)");
var match = regex.Match(s);
var companyName = match.Groups["CompanyName"];
答案 2 :(得分:0)
如果格式已修复,您可以尝试:
var regex = new Regex(@"^(?<name>[^\(]+)\((?<n1>\d+)/(?<n2>\d+)\)");
var match = regex.Match(input);
var companyName = match.Groups["name"].Value;
var number1 = Convert.ToInt64(match.Groups["n1"].Value);
var number2 = Convert.ToInt64(match.Groups["n2"].Value);
这会将所有内容与开括号匹配,并将其放入命名组&#34; name&#34;。然后它匹配括号内的两个数字,用&#34; /&#34;分隔;并将它们放入名为&#34; n1&#34;和&#34; n2&#34;分别