2

この質問が平凡に思えることはわかっていますが、小さな問題があります。私はこれに似た入力を一致させようとしています:

%!: Word Word=888 Word=AAA

...この正規表現を使用:

[A-Za-z]*

文字のみを含む最初の単語を選択するだけです。私のC#コード:

string res = Regex.Match("[A-Za-z]*", this.Content, RegexOptions.Singleline).Value;

私を助けてください。それは私のために働いていません。

4

4 に答える 4

6

あなたは基本的にそこにいます。

あなたの正規表現は@"\b[A-Za-z]+\b".

そして、なぜ一致が得られないのか疑問に思っている場合。入力パラメーターとパターンパラメーターを混同したためです:)

あなたがしたい:

string res = Regex.Match(this.Content, @"\b[A-Za-z]+\b", RegexOptions.Singleline).Value;

いいえ:

string res = Regex.Match(@"\b[A-Za-z]+\b",this.Content,  RegexOptions.Singleline).Value;

:)

于 2012-05-30T17:53:07.807 に答える
1

別のオプション (他の単語も選択する必要がある場合に便利です) は、すべての単語を一致させて最初に選択することです。

new Regex(@"\b[A-Za-z]+\b").Matches("%!: Word Word=888 Word=AAA")[0]
于 2012-05-30T17:55:37.277 に答える
1

[A-Za-z]+ は、括弧内の何かの 1 つ以上の出現を監視します。* は、0 回以上の出現に一致します。

于 2012-05-30T17:28:23.033 に答える
0

^式の先頭にニンジンを追加して、最初から一致させます。つまり、最初の 1 つだけです。

于 2012-05-30T17:31:34.147 に答える