0

このRubularウィンドウhttp://rubular.com/r/YH8Qj2EY9jからコードに慎重にカットアンドペーストしましたが、異なる結果が得られました。Rubular マッチ キャプチャは、私が欲しいものです。まだ

desc_pattern = /^<DD>(.*\n?.*)\n/
if desc =~ desc_pattern
    puts description = $1 
end

最初の行のみを取得します。つまり、

<DD>@mathpunk Griefing (i.e. trolling) as Play: http://t.co/LwOH1Vb<br />

私のテストデータではないと思いますが、それは可能です。私は何が欠けていますか?

(Ubuntu 10.10 では Ruby 1.9(

4

3 に答える 3

1

以下:

#!/usr/bin/env ruby

desc= '<DD>@mathpunk Griefing (i.e. trolling) as Play: http://t.co/LwOH1Vb<br />
– Johnny Badhair (8spiders) http://twitter.com/8spiders/status/92876473853157377
<DT>la la this should not be matched oh good'
desc_pattern = /^<DD>(.*\n?.*)\n/
if desc =~ desc_pattern
    puts description = $1 
end

プリント

@mathpunk Griefing (i.e. trolling) as Play: http://t.co/LwOH1Vb<br />
– Johnny Badhair (8spiders) http://twitter.com/8spiders/status/92876473853157377

私のシステム(Linux、Ruby 1.8.7)。

おそらくあなたの改行は本当に\r\n(Windowsスタイル)ですか?試してみるとどうなりますか:

desc_pattern = /^<DD>(.*\r?\n?.*)\r?\n/
于 2011-07-19T06:11:21.910 に答える
1

制御文字を表示し、改行文字を確認できるエディターにテストデータを貼り付けます。\n通常、正規表現のようにLinuxシステムにのみ存在する必要があります。(数週間前に異常な改行がありましたが、その理由はわかりません。)

実行できるもう1つのチェックは、角かっこを変更してキャプチャグループを印刷することです。正規表現のどの部分が何に一致するかを確認できるようにします。

/^<DD>(.*)\n?(.*)\n/

これを機能させるためのもう1つのアイデアは、を変更すること.*です。どの文字にも一致するとは言わないでください。何にでも一致すると言ってください\n

^<DD>([^\n]*\n?[^\n]*)\n
于 2011-07-19T06:02:25.777 に答える
1

コードに複数行の修飾子が必要だと思います。

/ mマルチラインモード:ドットは改行に一致し、^と$は両方とも行の開始と終了に一致します。

于 2011-07-18T23:26:16.863 に答える