用于选择多个名称和避免单个名称的正则表达式
本文关键字:单个名 正则表达式 用于 选择 | 更新日期: 2023-09-27 18:12:44
我有case。我想从输入中选择多个乘客的名字。在本例中,Condition是当输入只包含单个乘客姓名时,避免输入该字符串。
我为这种情况创建正则表达式。从输入中选择多个名字是可行的,但是当我想在输入中避免单个乘客名字时,它就不可行了。
我的目标是,我只想选择那些包含多个乘客姓名而不是单个乘客姓名的情况。
Regex regex = new Regex(@"('d+'.[a-zA-Z]'S(.+))", RegexOptions.IgnoreCase | RegexOptions.Compiled);
foreach (Match m in regex.Matches(item))
{
name = m.ToString();
}
使用这个正则表达式,它会帮助你
(2。[a - z] ' S (+))
仅供参考,我的RegEx可能不是最优化的,仍在学习中。
来自"示例",即:
1.ALVARADO/RITA(ADT) 2.CABELLO/LUIS CARLOS STEVE(ADT)
为了提取至少一个名称,我使用了下面的RegEx:
Regex regex = new Regex(@"('d+'.'w+/'w+(( 'w+)+)?'('w+'))");
要提取多个名称(两个或更多),我使用以下RegEx:
Regex regex = new Regex(@"('d+'.'w+/'w+ 'w+(( 'w+)+)?'('w+'))");
然后,为了检索名字和姓氏,我做了一些字符串操作:
// Example string
string item = @"1.ALVARADO/RITA(ADT) 2.CABELLO/LUIS CARLOS STEVE(ADT)";
// Create a StringBuilder for output
StringBuilder sb = new StringBuilder();
// Create a List for holding names (first and last)
List<string> people = new List<string>();
// Regex expression for matching at least two people
Regex regex = new Regex(@"('d+'.'w+/'w+ 'w+(( 'w+)+)?'('w+'))");
// Iterate through matches
foreach(Match m in regex.Matches(item)) {
//Store the match
string match = m.ToString();
// Remove the number bullet
match = match.Substring(2);
// Store location of slash, used for splitting last name and rest of string
int slashLocation = match.IndexOf('/');
// Retrieve the last name
string lastName = match.Substring(0, slashLocation);
// Retrieve all first names
List<string> firstNames = match.Substring(slashLocation + 1, match.IndexOf('(') - slashLocation -1).Split(' ').ToList();
// Push first names to List of people
firstNames.ForEach(a => people.Add(a + " " + lastName));
}
// Push list of people into a StringBuilder for output
people.ForEach(a => sb.AppendLine(a));
// Display people in a MessageBox
MessageBox.Show(sb.ToString());