1

C# の正規表現に問題があります。私が持っているのは、ページを表す文字列 (HTML など) です。文字列には、別の場所に \r\n、\r、および \n も含まれています。文字列内の何かを一致させようとしています。

Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>");
string org = currentMatch.Groups[1].ToString();

これは問題なく動作しますが、前述の文字 (改行) のいずれかを文字列に含むものと一致させたい場合、何も返されません (空、一致なし):

Match currentMatch = Regex.Match(contents, "Description: <p>(.*?)</p>");
string org = currentMatch.Groups[1].ToString();

ただし、一致の上に次の行を追加すると機能します。

contents = contents.Replace("\r", " ");
contents = contents.Replace("\n", " ");

ただし、ソースを変更するのは好きではありません。これについて何ができますか?

4

1 に答える 1

1

.、デフォルトでは改行文字と一致しません。これは、 Regex Option を使用して変更できますSingleline。これは、入力文字列全体を 1 行として扱います。つまり、ドットは改行文字にも一致します。

Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>", RegexOptions.Singleline);

ところで、正規表現は通常 Html を処理する方法ではないことをご存じでしょうか?

于 2013-01-22T07:34:34.750 に答える