以下を使用して、空白までのすべて(まあ、すべての文字)を取得することができました:
@"^.*([A-Z][a-z].*)]\s"
ただし、空白の代わりに a に一致させたい(
...どうすればこれを管理できますか?
一致に '(' が含まれていない場合
あなたが望むのは、その文字までの任意の文字と一致させることである場合(
、これはうまくいくはずです:
@"^.*?(?=\()"
すべての文字が必要な場合は、これでうまくいくはずです。
@"^[a-zA-Z]*(?=\()"
説明:
^ Matches the beginning of the string
.*? One or more of any character. The trailing ? means 'non-greedy',
which means the minimum characters that match, rather than the maximum
(?= This means 'zero-width positive lookahead assertion'. That means that the
containing expression won't be included in the match.
\( Escapes the ( character (since it has special meaning in regular
expressions)
) Closes off the lookahead
[a-zA-Z]*? Zero or more of any character from a to z, or from A to Z
リファレンス:正規表現言語 - クイック リファレンス (MSDN)
編集:実際には、を使用する代わりに.*?
、カシミールが彼の回答で指摘したように、おそらく使用する方が簡単[^\)]*
です。^
文字クラス (文字クラスは構成体) 内で使用されるは[...]
意味を逆にするため、「これらの文字のいずれか」ではなく、「これらの文字以外のすべて」を意味します。したがって、その構成を使用する式は次のようになります。
@"^[^\(]*(?=\()"
制約文字クラスを使用するのが最善の方法です
@"^[^(]*"
[^(]
すべての文字を意味しますが、(
必要なのはパターン全体であるため、キャプチャ グループは必要ないことに注意してください。
次のパターンを使用できます。
([A-Z][a-z][^(]*)\(
グループは、大文字のラテン文字、小文字のラテン文字、開き括弧以外の任意の数の文字に一致します。必要ありませんのでご注意ください^.*
。
または、これは同じ基本的な動作を生成しますが、代わりに貪欲でない量指定子を使用します。
([A-Z][a-z].*?)\(