我想選擇給定字符串內的文本塊。這些文本塊具有幾乎相似的模式。 例如,在下面給出的文本中,我想捕獲以「客戶端」開始的行,即,我想選擇下面文本中給出的3個客戶端的信息。 有時候,這些信息可能不以單詞「客戶」開始,它可能以單詞「客戶」或「項目名稱」或「僱主」字開頭。如何使用正則表達式來捕獲重複文本塊?
1. Client Name
The XXX Company
Title
Application Dev Office
Period
September 2008 Till date
Role
Quality Analyst Lead
Responsibilities
Testing
Client Name
The XYZ Company
Title
Application web
Period
September 2009 Till date
Role
Quality Tester Lead
Responsibilities
Testing and destroying
3) Client Name
The 1234 Company
Title
Application web RIA
Period
September 2209 Till date
Role
Quality Lead
Responsibilities
Developer
我已創建了一個正則表達式,這和其計算方法如下:
(\n|\r|\a|\f)(\s|\d|\.)*?
(?<id>(Client|Customer|Role|Organi(s|z)ation|Vendor|Company|Employer))
(\s|\S)*?(?=(\n|\r|\a|\f)(\s|\d|\.)*?(\k'id'))*?
我用(\n|\r|\a|\f)
,因爲當我從文件加載文本字符串變量,^無法識別這些字符。
這個正則表達式的問題在於,它能夠識別前兩個客戶端的信息,但它無法識別最後一個客戶端的信息。
任何人都知道如何爲此發展正則表達式? 我爲此使用C#。
在此先感謝。
------------------編輯部分-------------------
我需要開發正則表達式,如果客戶端相關信息以單詞「客戶端」開始,則查看是否存在像「角色」,「環境」,「供應商」這樣的詞。如果存在這樣的詞,那麼我們只能說它是客戶相關信息。 但在某些情況下,這些信息可能以「僱主」之類的詞開頭。在這種情況下,我們仍然需要搜索「角色」,「環境」,「供應商」等詞。 也就是說,如果單詞「客戶端」匹配我創造了我的正則表達式像
(?<id>(Client|Customer|Role|Organi(s|z)ation|Vendor|Company|Employer))
的理由,那麼任何的除「客戶端」的話應該與後續文本。 如果找到任何單詞,則再次開始尋找「客戶端」。
編輯後,我不知道你在做什麼。在你編輯的部分,你突然說每個客戶都應該有一個「角色」,「環境」和「供應商」,但在你的文本中沒有提到「環境」。除了「客戶」記錄外,這兩個例子都沒有給出。要獲得有意義的回覆,最不重要的應該是給出你想要匹配的所有記錄類型的例子,並清楚地指出你想要提取哪些部分。 – 2009-11-06 12:03:57