正規表現 part4 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
07/08/02 13:53:20
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

2:デフォルトの名無しさん
07/08/02 13:53:48
◆関連サイト
正規表現メモ
URLリンク(www.kt.rim.or.jp)
Perl正規表現雑技
URLリンク(www.din.or.jp)
Regular Expression(Riue ちゃんの正規表現講座)
URLリンク(www.sixnine.net)
正規表現パズル
URLリンク(oraclesqlpuzzle.hp.infoseek.co.jp)
詳説 正規表現
URLリンク(www.oreilly.co.jp)
正規表現プログラミングFAQ
URLリンク(capslockabcjp.kitunebi.com)
JScript 正規表現の概説
URLリンク(msdn.microsoft.com)
.NET Framework 正規表現言語要素
URLリンク(msdn.microsoft.com)

◆関連スレ
[UNIX板] 正規表現
スレリンク(unix板)
[WebProg] 正規表現道場
スレリンク(php板)

◆前スレ
[1] スレリンク(tech板)
[2] スレリンク(tech板)
[3] スレリンク(tech板)


3:デフォルトの名無しさん
07/08/04 07:00:21
なんか過疎ってるな。>>1 乙。

4:デフォルトの名無しさん
07/08/06 12:01:26
保守

5:デフォルトの名無しさん
07/08/06 18:53:14
今デジカメのデータをリネームソフト(Flexible Renamer)で編集しています。
正規表現で()の中の文字列と()を消したいのですが
全く知識がないので分かりません。
プリセットの(.*)\(\d+\)(.*)で数字は消せるようなのですが、、、
場違いなレベルなのは重々承知しておりますが
できればどなたかご教授よろしくお願いいたします。

6:デフォルトの名無しさん
07/08/06 19:00:00
よくわからんが、その正規表現と似たもので括弧の中に数字以外も含めるってことなら

(.*)\([^)]+\)(.*)

でどうだろう。

7:デフォルトの名無しさん
07/08/06 19:52:32
>>6
ありがとうございます!できました。
凄く便利なものなんですね。
これを機会に勉強してみようかな。

8:デフォルトの名無しさん
07/08/06 20:38:01
しかし作ってるときは便利だけど、あとから見ると自分でも何やってんのかわかんないことあるよねw

9:デフォルトの名無しさん
07/08/10 02:20:23
http://A\.jp/(*)\1/(*)\2 →http://A\.jp/image/\1/\2

URLリンク(A.jp)URLリンク(A.jp)
と変換可能ですか?
オミトロンを使用して変換させてるのですが、特定のHPで変換後
URLリンク(A.jp)・・・・・と永遠にループするような障害にあっています
正規表現は上の表現で合っていますか?

10:デフォルトの名無しさん
07/08/10 02:21:53
表記間違えました
http://A\.jp/(*)\1/(*)\2 →http://A\.jp/test/\1/\2

URLリンク(A.jp)URLリンク(A.jp)

11:デフォルトの名無しさん
07/08/10 11:32:21
言語は何なの?
Perlだったら、s///gのオプションのgを指定しなければ繰り返さない。
PHPなら_Allが付いてる関数を使わない。

12:デフォルトの名無しさん
07/08/10 12:30:41
オミトロンwikiによると正規表現(PerlやJavascriptなどで見られる物とは大分違う)と書いてありました
ちょっとそれ以外に自分では探せませんでした
オミトロンの方のスレで質問することだったのかもしれません

13:12
07/08/11 01:38:05
正規表現を覚えたばかりの初心者なのでお許し下さい
@http://A\.jp/(*)\1/(*)\2 →Ahttp://A\.jp/test/\1/\2と変換したいのです
@に検索される文字列をAに変換するというのを目的にしています
Aがまた検索されるので/test/test・・・とループするのだと思います
1度だけしか検索に引っかからないような表現は無いでしょうか?

URLリンク(www.yahoo.co.jp) → URLリンク(www.yahoo.co.jp)

14:デフォルトの名無しさん
07/08/11 02:09:23
それは正規表現の問題じゃない
ループして適用されるのはオミトロンの事情では
ここで訊いても無駄

15:12
07/08/11 02:40:30
どうもお答えありがとうございました

16:デフォルトの名無しさん
07/08/13 08:17:52
PHPでURLの正規表現をしたいです。

$pat = "(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";//検出パターン
$rep = "<a href=\"\\1\">\\1</a>";//置換パターン
$body = ereg_replace($pat, $rep, $body);

で、大体はOKなのですが、URLのあとに例えば
<a href="URLリンク(yahoo.co.jp)私のHP
のように入力すると、ダブルクォーテーション以降も入ってしまいます。
(</a>の閉じカッコまで)
何か良い方法ありませんか?お願いします。



17:デフォルトの名無しさん
07/08/13 22:27:33
あげます

18:デフォルトの名無しさん
07/08/14 00:02:35
よくわからんけど、途中ドット入ってるじゃん。
エスケープしてみな

19:16
07/08/14 00:15:17
>>18
thx
$pat のことですよね?エスケープって\マークを前に付ければいいですよね?
ドットにやってみたけど駄目でした。$と/にもやってみたけど駄目でした。

20:デフォルトの名無しさん
07/08/14 00:23:36
じゃあ駄目だな

21:デフォルトの名無しさん
07/08/14 01:09:29
うまく動いてるような。
やりたいこととがよくわからん。

22:デフォルトの名無しさん
07/08/14 01:12:36
PHP知らんけど、文字列のエスケープと正規表現のエスケープをごっちゃにするなよ

23:16
07/08/14 01:32:05
<?php

$body="<a href=\"URLリンク(yahoo.co.jp)私のHP";
$body = htmlspecialchars($body);

$pat = "(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";//検出パターン
$rep = "<a href=\"\\1\">\\1</a>";//置換パターン
$body = ereg_replace($pat, $rep, $body);

echo "<p>$body</p>";
?>

ソースをあげておきます
>>22 すみません・・

24:デフォルトの名無しさん
07/08/14 01:34:18
何がしたいの
希望する結果を提示しなさいよ

25:デフォルトの名無しさん
07/08/14 01:40:03
まさか…
URLリンク(yahoo.co.jp)
の、">hello</a>の部分のこと言ってる?

26:16
07/08/14 01:44:58
>>24
文章にURLが含まれる場合、自動的にリンクにしたいのです。

>>25
そのまさかです

27:デフォルトの名無しさん
07/08/14 01:50:28
htmlspecialcharsした後の文字列がどうなっているのか考えたほうがいい

28:16
07/08/14 01:56:09
>>27
なるほど、ありがとうございました

29:デフォルトの名無しさん
07/08/14 07:45:48
 全角文字に囲まれた半角空白を削除するにはどうしたらいいのでしょ」?


30:デフォルトの名無しさん
07/08/14 11:12:40
s/\(全角文字\)(半角空白)+\(全角文字\)/\1\2/g

31:デフォルトの名無しさん
07/08/14 12:40:33
こういう寒いレスする奴ってどこの土舐めながら生きてるんだろうね

32:デフォルトの名無しさん
07/08/14 12:42:04
君が寒い

33:デフォルトの名無しさん
07/08/14 12:47:08
何と言う即レス。地面ばかりでなくスレにまで張り付いてるとは。

34:デフォルトの名無しさん
07/08/14 12:48:47
寒い寒い

35:デフォルトの名無しさん
07/08/14 12:52:26
質問がなってないからじゃん? >>1 読んだ?

36:デフォルトの名無しさん
07/08/14 12:53:47
あと文字コードもな。

37:デフォルトの名無しさん
07/08/14 14:54:33
日本語が扱えない言語には、
日本語が理解できない人間が集まる。


このスレの事ですよ〜〜〜〜w

38:デフォルトの名無しさん
07/08/14 15:23:35
痛いやつだな、万年夏休みなんだろうか

39:デフォルトの名無しさん
07/08/14 15:31:05
     ∩___∩
  。  |   ノ    ヽ
  \<^i、 ●  ● |    もしもし、警察?
    |ヽ(⌒)、( _●_)  ミ    知的障害者がいるクマー
   彡/  ト、_>|∪|  、`\
   /ノ  /   ヽノ /´>  )
  (_/      / (_/
   |       /

40:デフォルトの名無しさん
07/08/15 20:18:34
それだけでは警察は動かんよ

41:デフォルトの名無しさん
07/08/16 00:16:34
しつもん。
RHEL4です。

# cd /etc
# cat protocols | grep 12.

とすると
12 aaaaa
120 bbbbb
121 ccccc
・・・
てなふうな中身が出てきます。
「12」だけ排除したかったので

# cat protocols | grep "12[^ ]"
# cat protocols | grep 12[^$s]

等してみましたが想定どおりにいきません
うまく12以外を取り出す方法はないでしょうか。

いや、別に/etc/protocolsじゃなくてもいいんですけど

42:41
07/08/16 00:20:45
しまった、目的が書いてなかった。

「120〜129の行だけ抜き出す」です

43:デフォルトの名無しさん
07/08/16 00:50:19
protocolsの書式おかしくない?
120〜129の行を抜き出すなら
grep "\b12[0-9]\b" /etc/protocols
でいいかと

44:デフォルトの名無しさん
07/08/16 22:10:40
>>41
grep2回かけるに1票。
cat ほげ | grep "^12" |grep -v "^12 "

45:デフォルトの名無しさん
07/08/20 18:49:44
perl5.8.6です。
複数の空白を1つのアンダーバーに置換したいのですが、どうすればよいでしょうか。
空白分のアンダーバーが表示されてしまいます。

あと、Regexp-Commonなるモジュールを今日知って驚いたのですが
ほかに便利だったモジュールがあったら教えてください。

あ・・・・それとRegexpってなんて発音するんでしょうか?excite辞書にはなかったです

46:デフォルトの名無しさん
07/08/20 18:56:46
レゲーXP

47:デフォルトの名無しさん
07/08/20 19:01:08
>>46
元がRegular Expressionなのにか?w

48:デフォルトの名無しさん
07/08/20 19:03:13
>>45
s/\s+/_/g とか。

オライリーの「詳説正規表現 第2版」の p25 の脚注には、

> "regexp" というどう見ても不格好な略称も思いつくだろう。
> 筆者はこれをどう発音するのかわからないが、
> 舌足らずの話し方をする人なら抵抗なく発音できるのかもしれない。

とあり、その筋のひとでも読み方がわかんないと言っているくらいだから、
好きなように読めば良いんじゃないかな。

49:デフォルトの名無しさん
07/08/20 19:13:58
>>45
perlは知らんが、s/ +/_/g かs/ */_/g 同様のことをすればいいだけだろ。
初歩中の初歩だ。
それから、日本語読みは「れぎゅらーえくすぷれっしょん」だな。

50:デフォルトの名無しさん
07/08/20 19:14:52
たとえばURLの末尾が html? で終わってるかどうか
正規表現で判定するとして
 html?$ と
 \.html?$
ではどちらが高速なのでしょうか?
言語は C++ なのですが…

51:デフォルトの名無しさん
07/08/20 19:21:00
>>50
速度の問題は、実測ありき。

52:デフォルトの名無しさん
07/08/20 21:38:24
高速どうこういう以前に html?$ と \.html?$ は意味が違うと思うんだが・・・

53:デフォルトの名無しさん
07/08/20 22:12:50
>>52
単純に末尾がhtmlまたはhtmで終わってるかの判断でラクをするか
拡張子ということで\.もちゃんと書くか、の違いのつもりです。

54:デフォルトの名無しさん
07/08/20 22:17:50
\.html?$ の方が速いと予想。
開始文字が . だから、まず文字列中から . を検索するでしょ。
. は h よりも出現個数が少ないと思われる。

55:デフォルトの名無しさん
07/08/20 22:29:41
>>54
なるほど…参考になりました。
テストしてみます。


56:デフォルトの名無しさん
07/08/20 23:11:24
>>45 難しく考えることはない。そのまま読めばいいんだよ。

 regexp ・・・ レジェックスップ (Regular Expression の略です)

ちなみに、
UFO ・・・ ユーフォー (Unidentified Flying Object)
WGA ・・・ ウガ (Windows Genuine Advantage Notifications)
USA ・・・ ウサ (United States of America)
IME ・・・ イメ (Input Method Editor)


57:デフォルトの名無しさん
07/08/20 23:30:31
Regex/RegExpは許せるがRegexpは許せないよな?

58:デフォルトの名無しさん
07/08/21 00:11:46
レジイーエクスピーって読んでる。
ユーエスエーだし、アイエムイー。

こういう読み方って個人で色々あって面白いな。

59:デフォルトの名無しさん
07/08/21 00:15:35
「れぐえくすぷ」って読んでた。

60:48
07/08/21 01:15:56
同じく「詳説正規表現」には、
"regex" の "g" は "Regina" でなく "regular" の発音で、
"FedEX" と同じようなリズムで読むとある。
カタカナ読みだと「レゲックス」か「レグエックス」あたりが近いかな?

漏れは、 "regex" は「レジェックス」って読むけど、
"regexp" は「レグエックスピー」って読んでるな。

61:デフォルトの名無しさん
07/08/21 02:16:25
レグェックスプ

62:・∀・)っ-○◎●
07/08/21 04:32:36
ラジェックスp

63:デフォルトの名無しさん
07/08/21 10:15:53
レグイーエックスピー。
このべた過ぎる読み方が多数派だと思う

64:56
07/08/21 13:33:47
バカだなおまいら。わざわざ分かりやすくボケてやったら、真に受けやがって。

あのな、regexp (あるいは regex) はな、Regular Expression の略語なんだ。
略語にさ、必ず読み方があるとは思うなよ。

UFO ・・・ ユーフォー は、たまたま語呂がいいからそう読まれているだけで、
大多数は、
WGA ・・・ ダブル・ジー・エー (アルファベットそのまんま)
USA ・・・ ユー・エス・エー (同上)
IME ・・・ アイ・エム・イー (同上)
でいいんだよ。

よって、regexp は「レギュラエクスプレッション」でいいし、「せいきひょうげん」と読んでもいい。

65:デフォルトの名無しさん
07/08/21 13:36:56
誰も56を相手にしていなかった件

66:デフォルトの名無しさん
07/08/21 13:43:00
>>64
UFOはそもそもフライングソーサーの間違いだそうだw
それは兎も角、nativeは一文字ずつ発音しているね。

67:デフォルトの名無しさん
07/08/21 13:50:19
いや一文字ずつ発音する人もそうでない人も両方いるよ
最近は日本の胡散臭い番組でもユーエフオーって言うようになってる

68:デフォルトの名無しさん
07/08/21 14:05:58
ほぉ、Websterでは一字ずつの発音しか書いてなかった。

69:デフォルトの名無しさん
07/08/21 14:11:30
原則的には 3文字未満は一字ずつ、 4文字以上は単語として読めるものはその読み方、
とおじいちゃんが言ってた。

70:デフォルトの名無しさん
07/08/21 14:15:10
>>64
まずは、短縮形と acronym を一緒くたに語って、「よって、〜」と演繹するのをやめるところからはじめてみよう。

71:デフォルトの名無しさん
07/08/21 14:23:04
<abbr><acronym>論争を髣髴とさせるなw

72:45
07/08/21 14:27:55
あれ、なんか話がこじれてる・・・?

>>48
>>49
ありがとうございます。そう書いたつもりだったんですが、+のつけ忘れだったのかもしれません。


読み方は
>>63
のレグイーエックスピーが良いかと


73:デフォルトの名無しさん
07/08/21 14:53:49
自分は心の中でレグエクスプと読んでます

74:デフォルトの名無しさん
07/08/21 15:13:27
私は「れぎゅえくすぷ」だなぁ。

75:デフォルトの名無しさん
07/08/21 16:09:08
Falseをフォルスと読むかファルスと読むかの違いみたいなもんだな。

俺はファリスのほうが好きだ

76:デフォルトの名無しさん
07/08/21 16:09:47
それは違うだろ

77:デフォルトの名無しさん
07/08/21 16:13:52
レグエキスプに一票

78:デフォルトの名無しさん
07/08/21 16:14:09
ヌル、ニル、ナルの違いか

79:デフォルトの名無しさん
07/08/21 16:24:57
>>75
それは、英語の発音を日本語でどう発音するか、という話しだと思うけど、
Regexp の場合はそもそも英語でどう発音するか決まってないのが問題と思われ。

80:デフォルトの名無しさん
07/08/21 16:30:56
>>78
NULL、nil、NUL

と言う冗談はさておき、falseのalはallのalと同じ発音だから「ファルス」は無理があると思う。

81:デフォルトの名無しさん
07/08/21 16:39:33
読み方ネタは盛り上がるねえ。
これからもネタがないときは定期的に投下することにしよう。

82:デフォルトの名無しさん
07/08/21 16:41:55
おう 頼んだ

83:デフォルトの名無しさん
07/08/21 18:46:52
>>66
フライングソーサーはUFOの一種ですよ。
それが何であるか識別できなければ鳥だってUFOです。

ユーフォーの呼び方を広めたのはピンクレディじゃなかろうかのう(じじいの繰り言)。

84:デフォルトの名無しさん
07/08/21 18:54:43
>>64
関係ないけどトランプの柄にUSADAMONってのがあってずっとUSAダモンかと思ってたんだよ
そしたらウサダモンだってさ。ローマ字かよってすげえ突っ込みたかったね

85:デフォルトの名無しさん
07/08/21 19:00:41
flying saucer=空飛ぶ受け皿
unidentified flying object=正体不明の飛行物体

86:私ゃアシモフのシンパだで
07/08/21 21:55:40
>>83
確認できてしまった段階で、UFOではなくなってしまうわけでして。

87:デフォルトの名無しさん
07/08/22 17:36:21
HTMLタグのアトリビュートの囲い文字「"」なり「'」を
全部削除する正規表現がわかりません。

PHPのpreg_replace()で使いたいのでperl互換正規表現で
何かしらの情報をいただければ幸いです。

失礼いたします。

88:デフォルトの名無しさん
07/08/22 18:05:45
そういうのはHTMLパーサ使うべきじゃね

89:デフォルトの名無しさん
07/08/22 20:40:13
$httdat = preg_replace('/"/', "", $httdat);
じゃなくって?

90:デフォルトの名無しさん
07/08/23 00:25:37
$html = str_replace("'", "", $html);
$html = str_replace('"', '', $html);
とか・・・


91:デフォルトの名無しさん
07/08/23 11:28:01
タグのなかの"だけ取りたいんじゃないの?

92:デフォルトの名無しさん
07/08/23 19:53:44
じゃ、タグだけ取り出して、
$tag = str_replace('"', '', $tag);
とかで " を削除して、元の html にハメ込めばいいやん。

<body>
<a href="img/unko.jpg">"うんこ"の画像</a>
</body>

  ↓

1.<body> を取り出す ⇒ なにもしない。
2.<a href="img/unko.jpg"> を取り出す⇒ " を削って元にハメ込む。
3.</a> を取り出す ⇒ なにもしない。
4.</body> を取り出す ⇒ なにもしない。

  ↓

<body>
<a href=img/unko.jpg>"うんこ"の画像</a>
</body>

正規表現とか、そういう以前の、プログラミングの基礎の問題な気がする。

93:デフォルトの名無しさん
07/08/23 19:58:38
じゃ、タグをどうやって取り出すんだい?
>>88に戻る

94:デフォルトの名無しさん
07/08/23 20:00:32
というより、正規表現一発ではできないというのが正解

95:デフォルトの名無しさん
07/08/23 22:31:37
ヒントだけじゃダメなようだね。こんなコードでどうだ?

<?php
$html = '<body>
<a href="img/unko.jpg">"うんこ"の画像</a>
</body>
';

$result = '';
while (preg_match('/^(.*?)(<.+?>)(.*)$/s', $html, $s)) {
  $result .= $s[1];
  $tag = $s[2];
  $html = $s[3];

  $tag = str_replace('"', '', $tag);
  $tag = str_replace("'", "", $tag);
  $result .= $tag;
}

echo $result;
?>

ツッコミどころはあるかもしれないが、
わかりやすいコーディングを心がけたから、効率は二の次な。
あと、インデントに漢字の空白つかってるから、そのままコピペじゃ動かんよ。
どうもこの掲示板、コードを正しく貼り付けられないからプログラミングの話題には向かないなぁ。

96:デフォルトの名無しさん
07/08/23 23:08:09
>>95
>>88でFAなのに、何故そんなコメントやCDATAにも対応してない穴だらけのコードを
撒き散らすのか
馬鹿はこれだから困る

97:デフォルトの名無しさん
07/08/23 23:31:43
ようは扱いの簡単なHTMLパーサ(リーダー)があればいいのかな。

98:デフォルトの名無しさん
07/08/23 23:42:21
>>88 それのどこが正規表現w

99:デフォルトの名無しさん
07/08/23 23:44:28
Rubyスレでお勧めHTMLパーサ教えてって聞くとRegexpって答えが返ってきます

>>95
<img alt="hoge's image" ...でアウト

100:デフォルトの名無しさん
07/08/23 23:46:01
attribute の引用符を外したい、という時点で一体何を考えてるのやら、と思ってしまった俺ガイル。

101:デフォルトの名無しさん
07/08/24 00:33:01
ほらほら、また情報小出しが始まった。

102:デフォルトの名無しさん
07/08/24 00:52:01
>>87はもういないだろ

103:デフォルトの名無しさん
07/08/24 02:33:08
>>101 には何が見えているのだろうか?

104:デフォルトの名無しさん
07/08/24 21:20:49
全角のタブってどうあらわすんですか?

105:デフォルトの名無しさん
07/08/24 21:49:33
全角のタブって何だよ

106:デフォルトの名無しさん
07/08/24 22:14:31
>>105
全角のタブはx-jisで定義されてる
スレリンク(hack板)

107:デフォルトの名無しさん
07/08/24 22:34:33
>>99
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない

ちょっとは自分で考えろよ。応用力の無いヤツには何を教えても無駄。
もうこれが最後だからな。

<?php
$html = '<body>
<a href="img/unko.jpg" alt="kuso\'s image">"うんこ"の画像</a>
</body>
';

$result = '';
while (preg_match('/^(.*?)(<.+?>)(.*)$/s', $html, $s)) {
  $result .= $s[1];
  $tag = $s[2];
  $html = $s[3];

  $tag = preg_replace('/="(.+?)"/', '=$1', $tag);
  $tag = preg_replace("/='(.+?)'/", '=$1', $tag);
  $result .= $tag;
}

echo $result;
?>


108:デフォルトの名無しさん
07/08/25 00:31:43
>>106
初めて知った・・・

109:99
07/08/25 07:41:35
>>107
俺は>>87じゃないよ
で、<!-- <a alt="hoge's image" ...> --> でアウト

110:デフォルトの名無しさん
07/08/25 11:25:12
1. 読まない
2. 調べない
3. 試さない
4. 理解力が足りない
5. 人を利用することしか頭にない

111:デフォルトの名無しさん
07/08/25 11:29:59
糞コード張って悦に浸ってる馬鹿を煽ってるだけと気づけ

112:デフォルトの名無しさん
07/08/25 11:57:48
>>109 せんせい、1+1って何ですか?

>>107 ここにリンゴが1個あるだろ。そこにもう1個リンゴをを置いてごらん、2個になっただろ?
  これが1+1だ。答えは2になる。

>>109 じゃぁ1+2は?

>>107 同じように考えればいいさ。1個のリンゴがある。その横にあと2個リンゴを置けば・・ほら、3個になっただろ?
  これが、1+2だ。答えは3になるんだよ。

>>109 わぁ、すっごいなぁ。

>>107 じゃぁ、問題出すよ。1+3は?答えられるかな???

>>109 せんせい、それはまだ習ってません。答えられませ〜ん。

ダメだこりゃw

113:デフォルトの名無しさん
07/08/25 12:00:04
糞コードは張ること自体が罪。いい経験になっただろ?

114:デフォルトの名無しさん
07/08/25 12:23:19
浅はかな回答者の糞コードへのツッコミを、どうしても理解力の足らない
質問者の質問ということにしたいらしいねぇ
>>88より後は、全部無駄レスじゃん

115:デフォルトの名無しさん
07/08/25 13:20:24
stickam.jp むてきんぐ
URLリンク(www.stickam.jp)
stickam.jp KGKGKG
URLリンク(www.stickam.jp)


116:デフォルトの名無しさん
07/08/25 14:07:57
>>113
自分のこと言われてると気付いてないみたいよ。

117:デフォルトの名無しさん
07/08/26 18:43:44
環境は秀丸です

「前の行末がピリオド&行末がピリオドでない行」
の前後に空行を入れたいのですが、どう書けばいいのか教えてください


Hoge hoge.
Moge moge.
Title
Hoge hoge.
Moge moge.

を下のようにしたいのです。

Hoge hoge.
Moge moge.

Title

Hoge hoge.
Moge moge.


([^\n]*)[^\.]\n ⇒ \n\n\1\n\n とか考えてみたけどダメですた

118:デフォルトの名無しさん
07/08/26 19:19:40
これでどう?
^(.*[^.])$

119:デフォルトの名無しさん
07/08/26 19:21:22
>>117
やる気あるのか?
バカは諦めなさい。

120:デフォルトの名無しさん
07/08/26 19:34:09
>>117
↓スマートじゃないけど。

検索文字列:
\.\f\n.*[^.]\n\f
置換文字列:
.\n\1\n

121:デフォルトの名無しさん
07/08/26 19:43:28
>>120
サンクス
ばっちりでした

>>118
なんか秀丸って行頭行末をまたぐときとかって、$^とかうまく反応して
くれないんですよね >>120でいけました 118もありがとう



122:118
07/08/26 19:51:27
自分のは完全な誤答だったよ(´・ω・`)出直してきます

123:デフォルトの名無しさん
07/08/26 20:00:21
> ^(.*[^.])$
顔文字っぽく見える

124:デフォルトの名無しさん
07/08/26 22:09:35
基地害じゃね?

125:デフォルトの名無しさん
07/08/27 12:32:15
JavaScriptでの「?:」の意味を教えてください。解説サイトでも可です。
よろしくお願いします。

126:デフォルトの名無しさん
07/08/27 13:19:04
なんでこう、混乱する訳ばかりなんだろうな。

正規表現というのは、例えば
「円周率は3.13」
という誤りを
「円周率は3.14」
と、正しく書くこと。






127:デフォルトの名無しさん
07/08/27 13:30:30
正則表現とでも呼んでおけ

128:デフォルトの名無しさん
07/08/27 15:40:01
>>125
キャプチャなしの括弧
URLリンク(developer.mozilla.org)

129:125
07/08/27 16:15:47
>>128
ありがとうございました。

130:デフォルトの名無しさん
07/08/28 17:24:44
javascriptかperlなのですが
(fire|fighter|future|fusion) と (fi(re|ghter)|fu(ture|sion))
のような場合はどちらが高速でしょうか?

131:87
07/08/28 18:21:10
87です。
こちらを見に来るのをすっかり忘れてしまっておりました!
大変申し訳ございませんでした。

>>88
HTMLパーサを使うほうが良いとのご忠言、ありがとうございます。
その方向も模索させていただきます。

>>89,90様
>>91様のご指摘通り、HTMLタグのアトリビュートの"'のみを外したいと
考えておりました

>>92,95様
具体的なサンプルまで作成頂きまことにありがとうございます。
なるべく正規表現のみで実現できないかを模索しておりましたので、
その方法を選択肢から排除しておりました。申し訳ございません。

>>94
なるほど、やはり正規表現の1発処理は諦めたほうが良いのですね。

>>97
大賛成です。

>>100
良いか悪いかは別としまして、モバイルサイトで出力されるHTMLを極力
シェイプアップさせるべく、アトリビュートの囲み文字を一括ではずす
ことがしたかったのです。

>>102
失礼しました。確かにおっしゃる通りです。申し訳ございません。



132:デフォルトの名無しさん
07/08/28 18:26:41
やる気のないやつにはろくな回答が返ってこんわな

133:デフォルトの名無しさん
07/08/29 13:44:15
>>130
>(fire|fighter|future|fusion)
こんなことするんだったら連想配列つかえよw

134:デフォルトの名無しさん
07/08/29 21:49:22
>>130
っ Benchmark

135:デフォルトの名無しさん
07/08/30 01:14:58
質問させてください。
「X=\\\\\\\\ho\\,ge\\\\」を
「X=\\ho,ge」にするにはどうすればよいでしょうか?
具体的には「\\\\」を「\」一文字に、「\\,」の場合はカンマのみにしたいのです。
\\{2,4} なんかを思いついて弄ってみたんですが、さっぱりでして……

136:デフォルトの名無しさん
07/08/30 01:19:53
単に \\, を , に置換してから、
\\\\ を \ に置換すればいいんでない?

137:デフォルトの名無しさん
07/08/30 22:17:04
正規表現で000000〜ffffffまでかどうかチェックできる表現教えてちょ

138:デフォルトの名無しさん
07/08/30 22:19:52
[0-9a-fA-F]{6}
でいいかな

139:デフォルトの名無しさん
07/08/30 23:44:00
>>137のルールに加えて、左に0はいくらつんでもOKの書式を許す、
純粋にffffffまでの数字かどうかはこれでいけるかな?

(?<![0-9a-f])0*[0-9a-f]{6}(?![0-9a-f])

140:デフォルトの名無しさん
07/08/31 07:18:58
>>139
6桁というのはチェックしたいです。

141:デフォルトの名無しさん
07/08/31 11:13:52
オライリーの詳説・正規表現に載っていたHTMLのパターンを
否定(訂正)していたのを別のオライリーの本で見かけたんだけど
タイトルを忘れてしまいまして
どなたかご存じないでしょうか?

142:デフォルトの名無しさん
07/09/02 01:16:22
文字列 Aと文字列 Bを両方含んでいて順序もA→Bになっている文字列にマッチする
正規表現を教えてください。

AiiiiiiiiB にはマッチして欲しい
BiiiiiiiiA にはマッチして欲しくない


143:デフォルトの名無しさん
07/09/02 02:06:35
A.*B で何か問題が?

144:デフォルトの名無しさん
07/09/02 08:37:32
>>142
AiBiAiB
BiAiBiA
は、マッチするの、しないの?


145:デフォルトの名無しさん
07/09/02 18:40:31
Berryの設定で正規表現を使いたいのですが
「list.php?table=moe&page=1」の最後の値が1〜9999まで
マッチするような正規表現を教えていただけませんか?

正規表現むずかしい><

146:デフォルトの名無しさん
07/09/02 19:03:51
list\.php\?table=moe&page=([1-9][0-9]{0,3})$
適当

147:デフォルトの名無しさん
07/09/02 19:12:57
>>146
うわーどうもありがとう。
正規表現って便利そうだけど難しくてなかなか^^;

148:デフォルトの名無しさん
07/09/05 18:31:09
VBSで正規表現を使ってます。
URLの相対パスを正規表現でマッチさせようとしているのですが
「../」と「./」の区別が付きません。どのようにして区別させたらよいのでしょうか?

149:デフォルトの名無しさん
07/09/05 18:54:01
どっちも相対パスだと思うが

150:デフォルトの名無しさん
07/09/05 18:58:25
説明が悪くて申し訳ないです

例えば「../././abc.html」の様なURLがあったとして
「./」のをマッチさせるのに「\./」とすると「../」にもマッチしてしまうので
「./」だけにマッチさせるにはどうしたらいいのかな?と思いまして…

151:デフォルトの名無しさん
07/09/05 19:16:23
(/|^)\./

152:デフォルトの名無しさん
07/09/05 19:22:56
ありがとうございます。できました!
時間を取ってそのパターンの意味を調べさせてもらいます

153:デフォルトの名無しさん
07/09/06 17:40:38
顔文字に見えてしょうがねえ

154:デフォルトの名無しさん
07/09/09 00:58:20
正規表現があるという事は偽物表現もあるということに他ならないわけですが
どこさありますか。

155:デフォルトの名無しさん
07/09/09 01:03:36
irregular expression?

156:デフォルトの名無しさん
07/09/13 10:45:48
文字列が全て0かどうかは
^0+*
でよいでしょうか?


157:デフォルトの名無しさん
07/09/13 11:45:24
^0+$ じゃないのかな

158:デフォルトの名無しさん
07/09/13 11:59:33
>>157
ありがとうございます!

159:デフォルトの名無しさん
07/09/14 11:40:36
スレタイに●が三つ以上入ってるスレを消したいたいんだが
全然消えない…この式じゃ間違ってる?

●{1}.*●{1}.*●{1}

ちなみに消したいのはこのスレ
スレリンク(jisaku板)

160:デフォルトの名無しさん
07/09/14 11:44:31
{1}って入れる意味あるのか?

161:デフォルトの名無しさん
07/09/14 12:05:29
てか正規表現で●って使えないっぽいな…
グーグルでも●の検索結果ゼロだしどうしたものやら

162:デフォルトの名無しさん
07/09/14 12:25:52
そんなバナナ

163:デフォルトの名無しさん
07/09/14 13:34:57
>>159
前方一致ならそれでもいいはずだが、完全一致なら最後にもう一組 ".*" が必要。

164:デフォルトの名無しさん
07/09/14 14:21:58
>>161
使えるかどうかは、ライブラリおよび環境設定による。

165:デフォルトの名無しさん
07/09/14 18:54:07
やっぱり●*ですら反応しないな…レスサンクス
ブラウザのほうのスレで聞いて来るわ
>159は撤回ってことで

166:デフォルトの名無しさん
07/09/14 19:25:12
.*●.*●.*●.*
こうじゃねーの

167:デフォルトの名無しさん
07/09/14 22:07:35
>>6
格好悪い顔文字作るなハゲ

168:デフォルトの名無しさん
07/09/15 08:05:30
(●.*){3,}
とかでいいんじゃないすか(^ω^;)

169:デフォルトの名無しさん
07/09/16 00:30:09
(.*●.*){3,}

ちょっとかわゆい

170:デフォルトの名無しさん
07/09/17 08:47:49
Perlで、Cのコメント除去プログラム
$text = join ('',<>);
$text = ~S
{
(".*?")|(/\*(.|\n)*?\*/)|(//[^\n]*)
}{$1}gx;
print $text;

171:デフォルトの名無しさん
07/09/17 13:04:12
phpで文字列の中のすべての4ケタの数字にマッチする
正規表現を試してます。
が、以下のスクリプトを動かしても"1234"がマッチしません。
なにかうまい方法ありませんでしょう。

//期待する結果 0000 1234 8888 9999
$str = "aaa 0000 1234 12345 1111 hoge 4545456465 9999";
$c = preg_match_all("/^[0-9]{4,}|\s[0-9]{3,4}\s|[0-9]{4,}$/",$str,$m);
echo $c."個マッチ<br>\r";
foreach ($m[0] as $k => $t){
echo "<br>\$m[0][$k] => $t\r";
$i++;
}

172:デフォルトの名無しさん
07/09/17 17:53:23
/(?<=\s)([0-9]{4})([^0-9a-z]?)/
なんとなーくという感じになってきたんですが…、もう少し何かorz

173:デフォルトの名無しさん
07/09/17 22:49:11
解決しました !
/\b[0-9]{4}\b/ //4ケタの数字にマッチ
でいけますた、スレ汚しスマソ。

174:デフォルトの名無しさん
07/09/23 23:22:56
JaneViewのNGExで悩んでいるのですが
 A A B
 A B A


 東京 埼玉 東京
 埼玉 東京 埼玉
 埼玉 千葉 埼玉
のように


((仙台|東京|名古屋).*大阪.*\2)|((仙台|東京|大阪).*名古屋.*\4)



175:デフォルトの名無しさん
07/09/23 23:37:37
すみません書きかけで送信してしまいました。

JaneViewのNGExで悩んでいるのですが
A,B,C,D…といったリストがあったとして、

 A A C D D B
のように間に入らなければ検出されずに
 A B A
 B C B
 C A B C
のようにリストの要素"AとA"や"BとB"の間に、別の要素が入っている場合を検出したいので
((A|B|C).*D.*\2)|((A|B|D).*C.*\4)
といった感じでやっています。
リストの要素が少なければ | でつないでいけばいいのですが、リストが多いととんでもない状態になりますよね。
どうすればこれをもっとスマートな表記にできるでしょうか?

176:デフォルトの名無しさん
07/09/27 21:16:09
(A|B|C|D)\s+((?!\1).)+\s+\1

とか?俺のJaneではヒットした。・・・一体何に使うのか気になる。

177:デフォルトの名無しさん
07/09/27 23:38:11
ありがとうございます。
(?!\1)でできました。

アニメサロンの延長情報確定スレに貼られている表で
邪魔な表を貼り付けられるのをあぼーんしたかったんだ。

178:デフォルトの名無しさん
07/09/28 11:42:54
正規表現で比較関数のようなことはできますか?

179:デフォルトの名無しさん
07/09/28 11:45:35
もっと具体的に

180:デフォルトの名無しさん
07/10/03 18:17:05
具体的に書いたらオマエが答えられるのかよ

181:デフォルトの名無しさん
07/10/03 18:39:11
答えられるか答えられないか具体的に判断できる

182:デフォルトの名無しさん
07/10/03 19:52:07
メーリングリスト等にもよくあるよね
内容が分かる程度に端折って書くと
「質問の仕方をしらない」等の苦情

具体的且つ詳細に書くと答えられないくせにw

183:デフォルトの名無しさん
07/10/03 22:13:05
こういう珍獣ってリアルにはいないんだよなぁ。

184:デフォルトの名無しさん
07/10/03 22:21:48
>>178=180=182
五日経っても回答得られなかった現実をきちんと見据えて、
いい加減諦めて「もっと具体的に」書いた方が良いのでは?

185:デフォルトの名無しさん
07/10/03 22:57:50
ん・・・全く意味が分からんからね。

186:デフォルトの名無しさん
07/10/03 23:54:49
こういう質問には「できません」と答えるのが大人のマナー。

187:デフォルトの名無しさん
07/10/04 00:25:03
>>184
もっと具体的に

188:デフォルトの名無しさん
07/10/04 02:24:11
もっと愚怠的に

189:デフォルトの名無しさん
07/10/04 08:37:31
hage

190:デフォルトの名無しさん
07/10/05 00:59:38
528 名前:名無し募集中。。。[] 投稿日:2007/10/05(金) 00:23:13.84 0
PHPの正規表現に詳しいやつがいたら教えてほしい
preg_replaceで置換をしたいんだが
たとえば
/sample/test/14567.jpg
というのを
/sample/test/backup/14567.jpg
というように最後の/を/backup/に置き換えるにはどうしたらいい?
いろいろ試してみたが俺のレベルじゃどうにもならんかった

191:デフォルトの名無しさん
07/10/05 01:29:35
preg_replace('/¥/([^¥/]+)$/', "/backup/$1", "/sample/test/14567.jpg");

192:デフォルトの名無しさん
07/10/05 16:25:45
知ったかぶり

193:デフォルトの名無しさん
07/10/05 22:30:53
>>190
pathinfo使えば?

194:デフォルトの名無しさん
07/10/06 10:35:59
余計なお世話

195:デフォルトの名無しさん
07/10/06 22:47:06
珍獣増えすぎwwwwwwwwwテラカオスwwwwwwww

196:デフォルトの名無しさん
07/10/06 23:56:30
[あはばば, ばばばば], あばばばば, あば, [あばばば, ば, ばばばばはば, ばば]

というような文字列があったとき、

[あはばば, ばばばば]
あばばばば
あば
[あばばば, ば, ばばばばはば, ばば]

と分割したいのですが、どのようにしたらいいでしょうか?
(\\[?.*\\]?),とかやってみたのですが全然だめでした orz
なかのあばば〜は変化します。

197:デフォルトの名無しさん
07/10/06 23:57:28
>>196
まずは >>1 を見てみて。

198:デフォルトの名無しさん
07/10/07 00:00:39
>>197
すいません、.NETのSystem.Text.RegularExpressionsのRegex.Split()で置換しています。

199:デフォルトの名無しさん
07/10/07 00:10:25
>>198
すいません、置換じゃなくて分割でした orz

200:デフォルトの名無しさん
07/10/07 01:56:00
>>196
まず、[あば,ばばば] を うんこっこー に痴漢する
(うんこっこー に痴漢した文字列は堆肥しておく)

うんこっこー, あばばばば, あば, うんこっこー
となるので、これを分割する。そのあと、
うんこっこー を堆肥しておいた文字列に戻す。

201:デフォルトの名無しさん
07/10/07 04:37:56
逆に、 "," をうんこっこーに置換しても良いかもね。
Perl ですまんけどこんな感じで。

$str =~ s/(\[[^]]+\]|[^,]+)(?:(,\s*)|$)/\1うんこっこー/g;
$ary = split(/うんこっこー/, $str);

202:デフォルトの名無しさん
07/10/07 12:19:13
Perl 5.8.8を使っています。
文字列の先頭からある文字列(たとえばXYZ)の直前までを削除する、
ただしその文字列XYZがこない場合はすべてを削除する正規表現は
どう記述したらよいでしょうか。

たとえば
(1) abcXYdefXYZ123 なら abcXYdef のみを削除する
(2) abcXYdef なら abcXYdef すべてを削除する
ということです。
s/^.*(XYZ)?/$1/; とすると(1),(2)ともすべてが削除されてしまい、
s/^.*?(XYZ)?/$1/; とすると(1),(2)とも1文字も削除されません。

s/^.*?XYZ// || s/^.*//;
とすれば(1),(2)ともうまくいきますが、
できれば1個の正規表現で実現させたいです。

203:デフォルトの名無しさん
07/10/07 13:02:54
s/^abcXYdef//;

204:デフォルトの名無しさん
07/10/07 13:19:38
ちゃんと動くんなら、自分の能力で到達可能な範囲のプログラムで十分だと思うよw

s/^((?!XYZ).)*//

205:デフォルトの名無しさん
07/10/07 13:27:33
s/(^.*?XYZ|^.*)//;

206:デフォルトの名無しさん
07/10/07 13:30:59
s/^.*?XYZ|^.*//;

207:デフォルトの名無しさん
07/10/07 13:32:25
> s/^.*?XYZ// || s/^.*//;
> とすれば(1),(2)ともうまくいきますが、

ウソつけ!

208:202
07/10/07 15:49:43
短時間にたくさんのレスが!ありがとうございます。
>>204
(?!pattern) が使えるんじゃないかと思って
質問前にPerlのマニュアルを読んだんですがうまくいきませんでした。
なるほど、こうすればうまくいくんですね。

>>207
s/^.*?XYZ/XYZ/ || s/^.*//; の間違いでした。失礼しました。

>>205-206
ということで、元の質問が間違ってたので間違いです。
試行錯誤の末、 s/^(.*(?=XYZ)|.*)//; という別解を見つけました。


209:デフォルトの名無しさん
07/10/07 20:10:50
PHP5のpreg_matchで、
涼子、愛、美姫以外の文字列が来た場合を検知したいんですが。

涼子、愛、美姫のどれかを検知する場合、
pattern = '/涼子|愛|美姫/';
ですが、涼子、愛、美姫以外を検知するにはどう書いたらいいですか?


210:デフォルトの名無しさん
07/10/07 20:13:06
そのパターンにマッチしないことを確認すればよい。

211:209
07/10/07 20:21:07
>>210
すみません。
涼子、愛、美姫以外を含む文字列です。

たとえば、涼子愛子美紀が来たばあい、
「子」が紛れ込んでることを検知したいのですが。

212:209
07/10/07 20:36:57
>>211
'/^涼子|^愛|^美姫/';


213:209
07/10/07 20:38:53
>>212
すみません。途中でした。
'/^涼子|^愛|^美姫/';
だと涼子、愛、美紀も全部ひっかかってしまいます。
それだけを含んで、それ以外の文字列を全然含まないようにしたいのですが。


214:デフォルトの名無しさん
07/10/07 20:55:01
同じくphp5のpreg_matchですが、
半角または全角の数字から始まるはどう書きますか?

215:デフォルトの名無しさん
07/10/07 21:39:55
>>213
/^(?:涼子|愛|美姫)*$/ とか?

216:デフォルトの名無しさん
07/10/07 21:40:46
>>214
/^(?:\d|1|2|3|4|5|6|7|8|9|0)/ とか?

217:デフォルトの名無しさん
07/10/08 00:15:19
$string = '涼子愛子美紀';
$result = preg_replace( '/涼子|愛|美姫/', '', $string);
echo 'おまんこ';


218:デフォルトの名無しさん
07/10/08 13:51:27
>>215-216
ありがとうございました。

>>217
氏ね!

219:デフォルトの名無しさん
07/10/08 17:38:51
NFAを機械的にDFAに変換する方法を教えてください。

220:デフォルトの名無しさん
07/10/08 20:14:07
そんなもん無い!


って答えでFA?

221:ヽ・´∀`・,,)っ━━━━━━┓
07/10/19 03:35:03
Aho-Corasick改とかでいいと思うが。

222:デフォルトの名無しさん
07/10/25 17:50:49
phpなんですが、URLリンク(*.example.*)にマッチさせたいと思ってます。
2つめの*の部分で、comやjp等にマッチさせたいのですが、
http:\/\/(.+\.)?example\..+/では、
URLリンク(www.example.hoge.com)なんかもマッチしてしまいます。
http:\/\/(+\.)?example\.(com|jp)/とかにすると、
新しいドメインがでてきたときに対応できません。
何かよい方法ありませんでしょうか?

223:デフォルトの名無しさん
07/10/25 18:33:14
>>222
「新しいドメイン」ってのはどんなところまでを想定してる?

224:デフォルトの名無しさん
07/10/25 18:49:54
簡易なのでよければ \..+ じゃなくて \.[^/.]+ にするとか

225:デフォルトの名無しさん
07/10/25 19:51:52
http:\/\/(+\.)?example\.[^.]+\/

226:デフォルトの名無しさん
07/10/27 16:43:32
/\/\/\/\/\//\/\/\/\/\/\/\FUCKINTOSH?_*+*}+}`+`%$W`}!LT`LA<VR`AKVAREGERGA"#%IW$%U&'I<{)'(<O'T(*O>


最近、こうして何の作意もなく打ったものが正則表現に見えてどうしようもない


227:デフォルトの名無しさん
07/11/08 00:14:41
最初と最後は"/"であり、
その間に"/../"や"/./"が発生しない文字列を
正規表現では記述できますか?

[×]
/etc/../usr/./local/
/../
/./

[○]
/etc/sysconfig/
/abc/.aaaa/

228:デフォルトの名無しさん
07/11/08 05:41:48
>>227
正規表現で一気に行うんじゃなくて、
"/" で分割して、各パーツがドットだけで構成されていたらハネる、とか
(ディレクトリトラバーサル対策ならよく調べたほうがいいかも)

229:デフォルトの名無しさん
07/11/08 08:45:57
ありがとうございます。
xmlのxsd:patternで書きたかったのですが、だめそうです。考え直してみます。

230:デフォルトの名無しさん
07/11/08 13:40:57
>>227
これでどうかな。

^/(([^/.][^/]*|\.[^/.][^/]*|\.\.[^/]+)/)*$

汚染チェックに使うなら>>228の言うようにした方がいいな。

231:デフォルトの名無しさん
07/11/11 17:33:05
webでの絵文字表示に苦戦しているのですが、
BAD+[SJISコード]を正規表現で表すにはどう書いたらいいですか?

232:デフォルトの名無しさん
07/11/11 17:34:32
書き忘れていました。言語はPHPで、バージョンは4.4.1です。

233:デフォルトの名無しさん
07/11/11 23:06:58
ぐ・ぐ・れ


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5366日前に更新/160 KB
担当:undef