1

コメントアウトされていない行については、「=」記号の後に続くテキストを行の終わりに一致させる必要があります。これに役立つ正規表現を提案できますか?

Example:
  // Username = admin
     Username = [any text here should match regex]

  // Password = password
     Password= [any text here should match regex]

次の例で更新:

One more example just for clarification:
  // FilePath = //test/test/test.log
     FilePath= //test/test/test.log

「=」の前に来るものはすべて、単語または単語のグループになります。それ以外は無視できます/無視されます。

単語と「=」の間にスペースがあるかどうかは関係ありません。「or」句はまだ実装できていませんが、これは私が機能させようとしている現在の正規表現です。より良い解決策がある場合、または次のいずれかのゲームで動作するように正規表現を更新するのに役立つ場合:

Different permutations:
 (?<=Username=).+
 (?<=Username =).+

 (?<=Password=).+
 (?<=Password =).+

解決済み: すべての例と迅速な対応/ヘルプに感謝します。次の2つの正規表現は、「=」の前の特定の単語に基づいて、「=」の後にすべての一致が必要か、「=」の後に単一の一致が必要かによって、私の状況に最もよく適合します。

^\s*\w+\s*=\s*(.+)$       // Returns all matches
^\s*Username\s*=\s*(.+)$  // Returns a single match for a specific field
4

5 に答える 5

3

これはうまくいくはずです:

^\s*\w+\s*=\s*(.+)$

この正規表現を使用する例を次に示します。

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string line = "     Username = [any text here should match regex]";

      Regex r = new Regex(@"^\s*\w+\s*=\s*(?<text>.+)$");
      Match m = r.Match(line);
      if (m.Success)
         Console.WriteLine(r.Match(line).Result("${text}")); 
   }
}
于 2012-10-10T19:58:16.557 に答える
1

これはトリックになります:

^\s*(?!//)\w+\s*=\s*(.*)

それが言うことはこれです:

^行頭

\s*任意の数の空白

(?!//)コメント無し

\w+少なくとも1つの単語文字(変数名で他の文字が許可されている場合は拡張する必要があります)

\s*任意の数の空白

=等号

(.*)行の残りの部分(グループ内なので、値を抽出できます)

于 2012-10-10T19:54:21.050 に答える
0

これは、コードが改行で区切られている場合にのみ機能します

^\s*[^\\]+\s*=(.+)$

multilineオプションを使用する

ここで働く

于 2012-10-10T19:56:01.363 に答える
0
^[^/]*=(.*)$

テキストは後方参照 \1 に一致します。

単一の / が見つかった場合は失敗します。

于 2012-10-10T19:56:01.790 に答える
0

私は次のようにそれを行うことができます (私は$一致する改行オプションも使用しています):

Section\:(?:[^\:]*(?:=.*)?\n)*\s*Field\s*=\s*(.*?)\s*$
  • Sectionはセクション識別子です
  • Fieldフィールド識別子です
  • 間違ったセクションのフィールドと一致しません
  • 最初のキャプチャ グループには、等号から前後の空白を除いた後のすべてが含まれます。
  • 値の名前にはリテラル コロンを使用できますが、キーの名前には使用できません
  • コメントされたフィールドを無視します
  • 空白のフィールドを無視します

次のものを使用して、正規表現でこれテストできます。

AnotherSection:
     SomeField = x
     AnotherField = y
Section:
     SomeField = Z
     AnotherField = Q
     TricksyBlankField
     Field
     // ^ this field is blank
  // Field = ignored because I'm a comment
     Herp = : <-- literal colon
     Field =        (everything in the parentheses get captured)        
     ExtraStuff = something

RegexPal はグループ マッチングを表示しませんが、表示されます。

于 2012-10-10T20:09:24.060 に答える