[過去ログ] 正規表現道場@2ch Part3 s/煽り|荒らし/あぼーん/g (989レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
814: 04/10/18 13:11 ID:??? AAS
>>813
SafariだとASCII or Unicode以外でポストするとき、迷惑にも
? -> \, ? -> 〜 に変換しやがるのです。
815: 04/10/18 13:13 ID:??? AAS
なぜか数値参照が化けた..orz
バックスラッシュ・チルダが全角バックスラッシュ・全角ウェーブダッシュにされるんです。
816: 04/10/18 13:43 ID:??? AAS
そうだったのかあ。
よくプログラミングネタや UNIX のトラブルシュートネタで、
コードやエラーメッセージをそのまま貼れ、って言うことがあるけど、
そういうのがあるとすると厄介ですなあ。
817
(1): 04/10/22 17:38 ID:xzmN9eHo(1) AAS
perlのサブルーチンを抜き出すような正規表現はどう書けばいいでしょうか?
言語はperlです。

-----------
sub aaa{
1
2
}
\n
sub bbb{
3
省20
818: 04/10/22 18:28 ID:??? AAS
つまらん
819: 817 04/10/23 01:25 ID:fB1MfhBi(1/2) AAS
そう言わず、ヒントだけでも下さい!
820: ◆7CWqH7Oesg 04/10/23 13:26 ID:??? AAS
$data=~ s/[\x0A\x0D]=\w+.*?=cut//gs;
$data=~ s/([\s;{}]*)#[^\x0A\x0D]*/$1/g;
$data=~ s/[\x0A\x0D]__(?:END|DATA)__.*//s;
@result= $data=~ /\s+sub\s+([a-zA-Z_]\w*\s*(?:\([^)]*\))?\s*\{(?:[^}]|\{[^}]*\})*\})/g;

これでどう?
821
(1): 04/10/23 13:52 ID:fB1MfhBi(2/2) AAS
$data = "sub aaa{\n1\n2\n}\n\nsub bbb{\n3\n}\n\n\n";

$data=~ s/[\x0A\x0D]=\w+.*?=cut//gs;
$data=~ s/([\s;{}]*)#[^\x0A\x0D]*/$1/g;
$data=~ s/[\x0A\x0D]__(?:END|DATA)__.*//s;
@result= $data=~ /\s+sub\s+([a-zA-Z_]\w*\s*(?:\([^)]*\))?\s*\{(?:[^}]|\{[^}]*\})*\})/g;

print @result;

を実行しても

bbb{
3
}
省1
822
(1): ◆7CWqH7Oesg 04/10/23 14:01 ID:??? AAS
>>821

@result= $data=~ /\s+sub
を以下に変えないといけないようだ。

@result= $data=~ /(?:^|\s|=)sub
823
(3): 04/10/29 01:30 ID:??? AAS
「直前が{でも}でもない改行を削除」を性器表現するとどうなりますか?
824: 04/10/29 02:15 ID:??? AAS
>>823
実装言語を言わずに回答が欲しいですかそうですか
825
(2): 04/10/29 02:35 ID:??? AAS
実装言語はなんでもいいです、でもいいですが、とりあえずはPerlでよろしくです。
826
(1): 04/10/29 03:55 ID:??? AAS
>>823
s/([^\^{}])\n/$1/g; # unixの改行
s/([^\^{}])\r\n/$1/g; # windowsの改行
s/([^\^{}])\r/$1/g; # Macの改行
827: 04/10/29 06:16 ID:??? AAS
また丸投げかよ
828
(1): 826 04/10/29 12:08 ID:??? AAS
ごめn、まちがった。
s/(^|[^{}])\n/$1/g;
だた。
829
(1): 04/10/29 13:38 ID:??? AAS
これでもよくね? s/([^{}])\n/$1/g;

>>823
次に質問するときはちょっとでも努力の跡を見せれ。
830: 04/10/29 13:51 ID:??? AAS
すまない、そしてありがとう。
829でできました。
831
(3): 04/10/29 15:00 ID:??? AAS
828、829とも改行が続く場合に削除できない。
また、829では先頭の改行を削除できない。
直前のパターンを指定する場合、普通は
(?<=PATTERN) や (?<!PATTERN) を使う。
この場合なら、s/(?<![{}])\n//g; とする。

>>829
次に回答するときはちょっとでも試行の跡を見せれ。
832
(2): 04/10/29 15:14 ID:??? AAS
>>831
改行が続く場合と、先頭の改行の違いを述べよ。
828が正解。
実際に試してから偉そうなこと言えよな。
833
(1): 04/10/29 16:20 ID:??? AAS
>>823-832
# 「直前が { もしくは } の改行のみ残る」なら、これは3行になる筈
my $orig = "\n\nfoo\n\n{\nbar\n}\n\nbaz\n\n";

(my $copy = $orig) =~ s/(^|[^{}])\n/$1/g; # 828
print "[$copy]\n";
# [
# foo
# {
# bar}
# baz]
省7
1-
あと 156 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s