3

私は正規表現が初めてです。

複数行検索をしたい。これが私がやりたいことの例です:

次のテキストがあるとします。

*プロジェクト #1:
CVC – 顧客価値の創造 (2007 年 9 月 – 現在まで)
Time Warner Cable は、世界をリードするメディアおよびエンターテイメント企業であり、Time Warner Cable (TWC) は同軸の矢筒を製造しています。
クライアント : Time Warner Cable、米国。
ETL ツール: Informatica 7.1.4
データベース: Oracle 9i。
役割: ETL 開発者/チーム リーダー。
OS : UNIX。
責任:
テスト計画とテスト ケース ブックを作成しました。
ピア レビューされたチーム メンバーのマッピング。
文書化されたマッピング。
開発チームを率いる。
レポートをオンサイトに送信します。
欠陥、データ、およびパフォーマンス関連のバグ修正。                                                                                                     
プロジェクト #2:
MYER – 販売分析システム (2005 年 11 月 – 現在まで)
            Coles Myer は、オーストラリア全土に 2,000 を超える店舗を持つオーストラリア最大の小売業者の 1 つです。
クライアント : Coles Myer Retail、オーストラリア。
ETL ツール: Informatica 7.1.3
データベース: Oracle 8i。
役割: ETL 開発者。
OS : UNIX。
責任:
Informatica を使用したデータの抽出、変換、読み込み。
ソースシステム全体を理解する。                                                                                     
セッションとワークフローを作成して実行します。
Syncsort アプリケーションを使用してソート ファイルを作成しました。*

最初に、小文字または大文字のいずれかの単語「Project」と一致させようとする正規表現を書きたいと思います。

「プロジェクト」が一致する場合、RegEx はクライアント、ロール、環境のいずれかに一致しようとします。正規表現の場合。これらのいずれかに一致すると、一致が完了します。(クライアント、役割、環境という言葉は、どのような場合でも、「プロジェクト」という言葉と同じ行にある場合とない場合があります)

上記のタスクに対して、次のような正規表現を1つ作成しました。

^((P|p)roject.*\s*.*((((E|e)nviornment)|((P|p)latform)|((R|r)ole(s)?)|((R|r)esponsibilit(y|ies))|((C|c)lient)|((C|c)ustomer)|((P|p)eriod)))

この正規表現。プロジェクト #1 と一致しますが、プロジェクト #2 とは一致しません。

この正規表現の何が問題なのか、またはこの種のテキストの正規表現の書き方を誰か教えてもらえますか?

4

3 に答える 3

2

これを試して:

Regex project = new Regex(
   @"^(Project [\s\S]*?" + 
   @"(Environment|Platform|Roles?|Responsibilit(y|ies)|Client|Customer|Period))",
   RegexOptions.ECMAScript | RegexOptions.IgnoreCase | RegexOptions.Multiline);
于 2009-10-22T10:57:43.053 に答える
1

C# の場合、Multiline オプションをパラメーターとして Regex コンストラクターに指定できます。

Regex r = new Regex("(var matches = new Array\\([^\\)]*\\);)",  
          RegexOptions.IgnoreCase | RegexOptions.Compiled 
          | RegexOptions.Multiline);

コードの詳細については、次のリンクを参照してください: C# と Regex: 引用符の間で文字列を抽出する方法

于 2009-10-22T10:54:26.513 に答える
0

プログラミング言語を指定していないため、これを実現するために一般的に使用されるパターンをいくつか示します。

/yourRegexpattern/m  <-- the m stays for multiline

あなたも使うことができます

/yourRegexpattern/im <-- the i stays for case insensitivity

それらの必要性を取り除く(P|p)など。

C# では、正規表現のコンストラクターでこれらのフラグを指定する必要があります。オートコンプリートを使用するだけです。

于 2009-10-22T10:47:38.690 に答える