我有一個用C#(3.5框架)編寫的ASP.NET應用程序,其中用戶向我提供了我們放置規則的模式列表。我可以編寫代碼來手動說明每種模式,但希望找到一種方法來使用正則表達式(或任何真正的方法)來處理它們,這樣我就可以允許用戶創建更多模式(遵循一些當然的指導)未來。需要正則表達式來匹配用戶生成的模式
我會盡我最大努力展示我正在嘗試做的事情。我非常感謝你的幫助。
這裏有幾個的圖案的:
模式1: 要素1:CxxxxRxxxx 要素2:CxxxxRzzzz 結果:桶1
圖案2: 要素1:CxxxxRxxxx
元件2 :CxxxxRxxxx 結果:桶2
模式3: 要素1:PCxxxxxxxx
要素2:PCzzzzzzzz 結果:鬥3
模式4: 要素1:PCxxxxxxxx
要素2:UxxxxRxxxx 結果:鬥4
這裏是他們的意思,以及如何我需要處理它們。對於初學者來說,所有元素的長度總是10個字符。每個圖案的字母字符都是不變的。 X和Z可以是數字或字母。 X和Z在這種模式中所表達的意思是這兩個元素的其他部分是否相互匹配。例如,我的輸入數據是元素1的「C1234R5678」,元素2的「C1234R9999」。在這種情況下,結果將是「桶1」,因爲它匹配爲此條件定義的模式「C」匹配,但「R」之後的數字不匹配)。
在另一個例子中,我的輸入數據是元素1的「C1234R5678」和元素2的「C1234R5678」。在這種情況下,結果將是「桶2」,因爲它匹配爲這個條件定義的模式在「C」匹配之後,以及「R」匹配之後的數字)。
在另一個例子中,我的輸入數據是元素1爲「PC12345678」,元素2爲「PC87654321」。在這種情況下,結果爲「桶3」,因爲它匹配爲此條件定義的模式之後的「PC」不匹配)。
在最後的例子中,我的輸入數據爲「PC12345678」作爲元件1和「U1234R5678」用於元件2。在這種情況下,結果將是「鬥4」,因爲這(在這個條件定義的模式匹配後4個數字的「PC」匹配在U後的4號和最後4位PC元件的元件2的R後匹配4個位數)。
正如你可以看到,該模式可以是字母或字母后的數字的整體運行之後的某個時候,你正在確定4個數字不同。
謝謝你的時間。
謝謝你的幫助。我試圖將這些代碼實現到我自己的代碼中。從使用您提供的正則表達式開始。我使用以下代碼: string strRegex = @「PC [A-Za-z0-9] {8} -PC \ 1」; RegexOptions myRegexOptions = RegexOptions。沒有; 正則表達式myRegex = new Regex(strRegex,myRegexOptions); string strTargetString = @「PC12345678-U1234R5678 \ n」; 我收到以下錯誤: 引用未定義的組號碼1. – user295197 2012-01-13 02:35:59
好吧,在弄清楚這個後,我得到了一些調整結果。你們都非常鼓舞人心,並且使得這項工作比我想象的更容易實施。乾杯! – user295197 2012-01-13 04:02:45
哦,道歉,'Element1'中的每個'xxx'組都需要圍繞它來捕獲括號,以便反向引用是可能的!我的壞 - 更新後。 – 2012-01-13 04:05:35