在字符串中解析名称

时间:2014-01-27 04:27:16

标签: c# regex

如何使用正则表达式在C#中匹配它?

1.1 or 2.1 or 1.I/3 or 1.C/1

这意味着字符串以数字开头,后跟一个点(。),然后是数字或字符C,I(或任何字母A - Z),然后是一个泼水(/),然后一个数字

我试过这个表达式,但它不起作用。

string patternName = @"\d\.(\d|I/\d|C/\d)";

3 个答案:

答案 0 :(得分:1)

你非常接近。试试这个:

string patternName = @"\d\.(?:\d|[A-Z]/\d)";

或更简单

string patternName = @"\d\.(?:[A-Z]/)?\d";

如果您想允许多个数字(例如1.102.I/22),请使用一个或多个(+)qunatifier:

string patternName = @"\d+\.(?:[A-Z]/)?\d+";

例如:

string input = "1.1NGUYEN/VAN DUONG MR 2.1NGUYEN/THI ANH MRS 3.I/1NGUYEN/THI NHU QUYNH";
string patternName = @"\d+\.(?:[A-Z]/)?\d+";
string[] output = Regex.Split(input, patternName);
// [ "", "NGUYEN/VAN DUONG MR ", "NGUYEN/THI ANH MRS ", "NGUYEN/THI NHU QUYNH" ]

答案 1 :(得分:1)

您可以使用:

(\d+\.(?:\d+|C|I)(?:\/\d+)?)

<强> DEMO

<强>说明

enter image description here

答案 2 :(得分:0)

使用此模式(已更新):

\d\.[\dIC]\/?\d?