在繼續之前,我需要確保一個字段在C#
中使用正則表達式使用正確的語法。這裏是我的代碼:C#的模式正則表達式語法
Description = 'AB1234567,AB3456789;AB2345678';
Regex reg = new Regex("(AB.{7},?)*;?(AB.{7},?)*");
Match match = reg.Match(Description);
if (!match.Success)
{
//code to raise error
}
所以,一些語法規則:
- 領域有2個英文字母(在這種情況下AB),其次是7個字符元素。
- 這些元素用逗號分隔,在「;」的左側或右側。他們在哪一方表明他們的財產,但任何一方都可能是空的。
- 如果右側不是空的,那麼「;」是強制性的,如果它是可選的。
- 每邊的最後一個元素不能以「,」結尾。
正確的示例:
- AB1234567,AB3456789;AB2345678
- AB1234567,AB3456789;
- AB1234567
- ;AB2345678,AB34567890
錯誤示例:
- AB1234567,;AB2345678
- AB3456789;AB2345678,
我的正則表達式是不完整的,但我不能想出如何考慮所有情況。這個問題的正確表達式是什麼?
什麼是最終目標?你是否需要在列表中提取AB ***? – codeSetter
是的,分成兩個列表。 – user7792598
好的,這裏的正則表達式應該可以工作(? AB \ d {7} [,;]),你會收到匹配的命名組。轉到:https://regex101.com/把yuor正則表達式和測試數據....你會做得很好.. –
codeSetter