1

改行 (vbNewLine、vblf、vbcrlf など) と継続行を含む文字列を取得するにはどうすればよいですか。以下は、「テキストの最初の行」のみを取得しているようです。

Dim rx As Regex
Dim var1 As String = "First line of text. " & vbNewLine & _
                     "Second line of text. " & vbNewLine & _
                     "Third line of text."

rx = New Regex(".*[\n\r]")
Dim search As String = rx.Match(var1).Value

期待される結果: search = "テキストの 1 行目。テキストの 2 行目。テキストの 3 行目。"

4

3 に答える 3

3

複数行のパターンを正規表現と一致させるには、singleline オプションを使用する必要があります。改行を含むすべての文字をキャプチャするように、ドットの動作を変更します。

rx = New Regex("(?s).*")

msdn へのリンクはこちら

于 2012-12-14T15:03:07.937 に答える
0

Regexoption 'RegexOptions.MultiLine' を見てください。これは、Regex オブジェクトの 2 番目のパラメーターである必要があります。次のようにします。

rx = New Regex(".*[\n\r]", RegexOptions.MultiLine)

それがうまくいくと思います。改行をスペースに置き換えるだけの場合は、関数 String.Replace でも十分です。

于 2012-12-14T15:02:29.350 に答える
0

最初の一致以上のものを取得するには、 を使用してくださいrx.Matches(var1)。この後、コレクションを反復処理できます。

ただし、正規表現にはエラーがあることに注意してください。改行が続いていないため、最後の行は一致しません。簡単な修正は次のとおりです。

rx = new Regex("\n");
var matches = rx.Split(var1);
//iterate collection

タグのため、コードは c# であることに注意してください。

于 2012-12-14T15:05:05.777 に答える