4

以下を使用して、空白までのすべて(まあ、すべての文字)を取得することができました:

@"^.*([A-Z][a-z].*)]\s" 

ただし、空白の代わりに a に一致させたい(...どうすればこれを管理できますか?

一致に '(' が含まれていない場合

4

3 に答える 3

9

あなたが望むのは、その文字までの任意の文字と一致させることである場合(、これはうまくいくはずです:

@"^.*?(?=\()"

すべての文字が必要な場合は、これでうまくいくはずです。

@"^[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)

編集:実際には、を使用する代わりに.*?、カシミールが彼の回答で指摘したように、おそらく使用する方が簡単[^\)]*です。^文字クラス (文字クラスは構成体) 内で使用されるは[...]意味を逆にするため、「これらの文字のいずれか」ではなく、「これらの文字以外のすべて」を意味します。したがって、その構成を使用する式は次のようになります。

@"^[^\(]*(?=\()"
于 2013-06-29T22:14:46.203 に答える
3

制約文字クラスを使用するのが最善の方法です

@"^[^(]*" 

[^(]すべての文字を意味しますが、(

必要なのはパターン全体であるため、キャプチャ グループは必要ないことに注意してください。

于 2013-06-29T22:17:37.033 に答える
0

次のパターンを使用できます。

([A-Z][a-z][^(]*)\(

グループは、大文字のラテン文字、小文字のラテン文字、開き括弧以外の任意の数の文字に一致します。必要ありませんのでご注意ください^.*

または、これは同じ基本的な動作を生成しますが、代わりに貪欲でない量指定子を使用します。

([A-Z][a-z].*?)\(
于 2013-06-29T22:14:24.030 に答える