正規表現 part4at TECH
正規表現 part4 - 暇つぶし2ch2:デフォルトの名無しさん
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 →②http://A\.jp/test/\1/\2と変換したいのです
①に検索される文字列を②に変換するというのを目的にしています
②がまた検索されるので/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
ぐ・ぐ・れ

234:デフォルトの名無しさん
07/11/11 23:47:19
うん、ググれば全て解決するからこのスレ潰すべきだね。

235:デフォルトの名無しさん
07/11/11 23:52:31
aho

236:デフォルトの名無しさん
07/11/12 00:15:22
ワロタwwwwwww

237:デフォルトの名無しさん
07/11/12 01:18:32
いや、ググって該当するページを見たんですけど、正規表現の構成の仕方がわからなくて、
ここに書き込みました。
調べるだけ調べたんですけど、やはりだめでしょうか

238:デフォルトの名無しさん
07/11/12 01:42:05
だめです

239:デフォルトの名無しさん
07/11/12 04:32:21
なんだこいつら 本当はできないんじゃねーの?

240:デフォルトの名無しさん
07/11/12 09:32:04
>>239
お、やっと気づいたようだね。それじゃあバイバーイ!

241:デフォルトの名無しさん
07/11/12 19:50:58
質問です。正規表現でconsumeするというのは日本語でいうとどういうことですか?

242:デフォルトの名無しさん
07/11/12 19:59:53
文字を消費するということ。

243:241
07/11/12 21:10:47
>>242
ありがとうございます。「文字を消費する」とはどういうことでしょうか?
イメージが湧きません。

244:デフォルトの名無しさん
07/11/12 22:24:56
正規表現 /..c/ を "abc" にマッチさせたときを考えると、
最初の /./ は "a" にマッチして消費する。
すると、なんと言うかテキストエディタのカーソルが一つ進むのをイメージしてくれたらよいか、
二個目の /./ が "b" にマッチできるようになる。

245:デフォルトの名無しさん
07/11/12 22:30:07
テキストエディタの ed ってのが元になってるからね。
カーソルって例えはナイス!

246:241
07/11/12 23:16:33
>>244
なるほど、よくわかりました。ありがとうございます。

247:デフォルトの名無しさん
07/11/15 07:57:08
おはようございます。このスレの過去ログってネットにありますか?

248:デフォルトの名無しさん
07/11/15 16:55:18
あります。

249:デフォルトの名無しさん
07/11/15 20:14:33
アキュムレータの0ビット目って左端?それとも右端?

250:デフォルトの名無しさん
07/11/16 00:58:31
>>249
スレ違い。

251:デフォルトの名無しさん
07/11/16 23:29:30
>>249


252:デフォルトの名無しさん
07/11/17 01:06:19
perl互換のFlexible Renamerで置換したいのですが。
(hoge)hoge(hoge).txtを(hoge) hoge(hoge).txtとしたい場合はどう書けばいいのでしょうか。
)の直後にスペースを入れ、拡張子前の)の直後には入れたくないんです。

253:デフォルトの名無しさん
07/11/17 01:30:29
")" -> ") "
" ." -> "."

254:デフォルトの名無しさん
07/11/17 01:34:08
>>253
なるほど。2回やるという手が・・・。ありがとうございました。

255:デフォルトの名無しさん
07/11/17 09:27:48
リネーマの仕様によるけど、Perl互換なら
"^(\([^)]*\))" -> "$1 "
"^(\([^)]*\))(.*)" -> "$1 $2"
とか。いずれにしても調整が必要

256:デフォルトの名無しさん
07/11/18 19:15:56
vb.netで
「// xxxxx EXEC ~」で始まり、
「// xxxxx EXEC ~」で始まる1行前までを
1グループで取得したいと考えています

(?ims:(^\/\/+\s+EXEC+.+))
だとまるまる取得してしまうのはわかるのですが、
これを上記の様に取得するにはどう書けばよいのでしょうか?

ご教授よろしくお願いいたします。


257:デフォルトの名無しさん
07/11/18 20:18:03
split

258:デフォルトの名無しさん
07/11/19 02:39:09
>>256
なんでスラッシュをエスケープしてんだよw

.NET の正規表現なら可変長の戻り読みが使えたと思うから、
その始まりのしるしと終端のしるしを戻り読みの部分と先読みの部分に置けば?

.NETで可変長の戻り読みができなかったらすまんw


259:デフォルトの名無しさん
07/11/22 22:35:09
数値比較をしたいのですが、0x021a4 っていくつなのでしょうか?

260:デフォルトの名無しさん
07/11/22 23:13:20
2 * 16^3 + 1 * 16^2 + 10 * 16^1 + 4 * 16^0

261:デフォルトの名無しさん
07/11/22 23:17:32
>>259
電卓開く

関数電卓モードにする

16進モードにする

21a4と打つ

10進モードにする

正規表現の話じゃねーし

262:デフォルトの名無しさん
07/11/23 01:54:14
URLリンク(www.google.co.jp)

263:デフォルトの名無しさん
07/11/23 01:58:02
URLリンク(www.google.co.jp)
これでおk

264:デフォルトの名無しさん
07/11/23 02:44:38
16進数知らないプログラマがいるのか・・・時代は変わったな。

265:デフォルトの名無しさん
07/11/23 02:46:28
プログラマじゃないから

266:デフォルトの名無しさん
07/11/23 08:04:03
具体的には秀丸エディタで置換を行いたいのですが、こうするには…
--------------
[12:34:56] 発言者1:
文章2
文章3
[12:34:56] 発言者2:
文章4



[12:34:56] 発言者1:
文章2
文章3

[12:34:56] 発言者2:
文章4

--------------
どうしたら良いのでしょうか?(文章の中に [ ] が含まれる可能性は無いものとして単純に)
\n[ と記述すると、正規表現の括弧の対応が合ってないとか怒られてしまいます。

非常に初心者な質問ですいません。

267:デフォルトの名無しさん
07/11/23 09:26:00
エスケープ

268:デフォルトの名無しさん
07/11/23 11:43:08
regexre
FrameworkFrame

などといったような「同じ文字列とそれに挟まれた別な文字列」を取り出したいのですが、
どういう文を書いたら実現できますか?
PHPのpreg_replaceで使用します。
よろしくお願いします。

269:デフォルトの名無しさん
07/11/23 12:00:17
re(.*)re でいけると思うけど。
以下はJScriptだけどこれくらいなら読み取れるよね?

var keyword = "re";
var pattern = keyword + "(.*)" + keyword;
var objReg = new RegExp(pattern);

"regexre".match(pattern);
WScript.StdOut.WriteLine(RegExp.$1);
"rere".match(pattern);
WScript.StdOut.WriteLine(RegExp.$1);
"regexregex".match(pattern);
WScript.StdOut.WriteLine(RegExp.$1);

270:デフォルトの名無しさん
07/11/23 12:50:33
Ruby なら (.+)(.+)\1 で $2 を取ればいけるけど、
PHP でいけるかどうかは知らん

271:デフォルトの名無しさん
07/11/23 12:53:54
>>269
日本語読解力に大きく欠けますな

272:デフォルトの名無しさん
07/11/23 13:00:21
eregexreならrが取れるはずだからつかいものになるのか?

273:デフォルトの名無しさん
07/11/23 13:05:34
eregexre なら regexr が取れる。
最長一致だから。
これが目的の物かはともかくとして。

274:デフォルトの名無しさん
07/11/23 13:51:50
>>269
すみません、説明不足でした。
同じ文字列というのも未知なのです。

>>270.
ありがとうございます。
Rubyならいける、というのは期待が持てました。
早速調べてみます。

>>272-273
ここも説明不足でした。
「同じ文字列とそれに挟まれた別な文字列」の全てを取得したいです。
つまりThisIsThePenという文字列からThisIsTh(とePe)を取得できるようにしたいのです。

275:デフォルトの名無しさん
07/11/23 13:56:24
sIs は要らないの?

276:デフォルトの名無しさん
07/11/23 14:00:51
sIs が必要ないならとりあえず Ruby ではこうなる。
PHP でいk(ry

'ThisIsThePen'.scan(/((.+).+\2)/) { puts($1) }

277:デフォルトの名無しさん
07/11/23 19:31:22
文字列 [全ての文字] を 正規表現 [[]([^\]]+)] で 全ての文字 を取り出すことができますが、 文字列 {全ての文字} で 全ての文字 を取り出す正規表現を教えてください。


278:デフォルトの名無しさん
07/11/23 19:42:51
日本語でおk

279:デフォルトの名無しさん
07/11/23 19:46:56
\{([^\}]+)\}

280:デフォルトの名無しさん
07/11/24 08:40:39
ありがとう。
すごいね
正規表現分かる人尊敬するわ

281:デフォルトの名無しさん
07/11/24 09:46:49
別に大した事じゃない。
すげーとか思って思考停止してるから理解できないだけ。

282:デフォルトの名無しさん
07/11/24 09:48:41
分かりました。
私も頑張って勉強します

283:デフォルトの名無しさん
07/11/24 10:09:17
よし! その意気だ!

284:デフォルトの名無しさん
07/11/24 11:18:23
ホモビデオからお前ら。

285:デフォルトの名無しさん
07/11/25 17:53:21
なんでホモなの?
私は女性です

286:デフォルトの名無しさん
07/11/25 19:20:34
性同一性障害か

287:デフォルトの名無しさん
07/11/25 20:30:25
性器表現

288:デフォルトの名無しさん
07/11/25 20:32:19
モザイクのことか

289:デフォルトの名無しさん
07/11/26 00:01:46
>>285
ホモセクシュアルは同性愛って意味だよ
当然、女性同士でも使う

290:デフォルトの名無しさん
07/11/26 12:46:15
ここにいる奴らは全員例外なくホモ



















サピエンス

291:デフォルトの名無しさん
07/11/26 15:19:45
ホモ牛乳という名前にはかなりインパクトがあると思うんだ

292:デフォルトの名無しさん
07/11/26 15:26:00
「ホモゲナイズド牛乳」じゃ長すぎるべ。

293:デフォルトの名無しさん
07/11/26 18:38:03
ホモジニアス・マルチコアを略してホモコア呼べ

294:デフォルトの名無しさん
07/11/27 08:45:29
みんな頭おかしいのですね。
残念です

295:デフォルトの名無しさん
07/11/27 11:39:19
HTMLに含まれる CSSの
class="***" や id="**" , aタグの target="***" を削除したいんですが、観よう見真似でやったのですが
マッチしてくれません。どなたか..

(id|class|target|title|style|name)=[\+\$\;\?\.\W\w%,!#~*/:@&=_-]+?

PC用に吐き出されたデータを、携帯用に変換したくて..

296:デフォルトの名無しさん
07/11/27 11:56:07
target="[^"]*"

297:デフォルトの名無しさん
07/11/29 17:43:52
HTMLのコメントを取得するにはどうしたら良いでしょうか?
<!--[^-->]*-->
で試したのですが[^-->]だと各文字を含まないとなってしまうのでだめでした。
文字列を含まないって表現方法がわかりません。
お手数ですがよろしくお願いします。

298:デフォルトの名無しさん
07/11/29 18:01:50
>>297
貪欲でないマッチ

299:デフォルトの名無しさん
07/11/29 18:35:11
>>297
html パーサ使え

300:297
07/11/29 19:51:50
>>298
ありがとうございます。
貪欲でないマッチでググッた所無事解決しました。

>>299
プログラム内で使いたかったので、
パーサを使うとhtml記述ミスなどがあった場合に面倒なので正規表現を使う事にしました。


301:デフォルトの名無しさん
07/11/29 23:53:17
>>299
アホ

302:デフォルトの名無しさん
07/12/02 03:37:22
bregexp.dllを使って
<th>ほげほげ<br/>ほげほげ</th>
のような<th>で囲まれた内部の<br/>だけ削除したいのですが、
<br/>の数が不定で困ってます。どう書けばよいのでしょう?

303:デフォルトの名無しさん
07/12/02 17:04:43
>>302
html パーサ使え

304:デフォルトの名無しさん
07/12/03 18:49:06
正規表現でand検索したいのですが
どのようにすればいいのですか?
正規表現: Win.*Mac.*Linux.*Sun
上記のようにやると、順番が固定されてしまいます。
どのような順番でもいいので4つ入っていれば
ヒットさせたいのです。


305:デフォルトの名無しさん
07/12/03 19:19:07
>>304
肯定戻り読み

306:デフォルトの名無しさん
07/12/03 21:22:52
(?=.*Win)(?=.*Mac)(?=.*Linux)(?=.*Sun).*

307:デフォルトの名無しさん
07/12/03 23:37:29
NHKのFMの番組の曲の時間表示(全角の数字と '分'と'秒'から成る文字列で
末尾は必ず '秒' )を一気に半角数字と「分⇒m」「秒⇒s」のように一気に置換
する方法がありますか? 全角数字でも '2007年' のような文字列はそのま
まにしたいのです。
【例】
'6分08秒' ⇒ 6m08s


308:デフォルトの名無しさん
07/12/04 00:20:03
tr/時分秒/hms/

309:デフォルトの名無しさん
07/12/04 09:06:00
>全角数字でも '2007年' のような文字列はそのままにしたい

のなら

>【例】
>'6分08秒' ⇒ 6m08s



'6分08秒' ⇒ 6m08s

ならないといけないの?

それとも【例】のようにして欲しいの?


310:デフォルトの名無しさん
07/12/04 21:11:44
正規表現処理系一般の話なら文字変換はダメだなあ

311:デフォルトの名無しさん
07/12/04 21:38:52
tr/時分秒[0-9]/hms[0-9]/


312:デフォルトの名無しさん
07/12/04 21:39:27
trはスレ違いだろ

313:デフォルトの名無しさん
07/12/05 00:33:46
>>309は日本語が読めないのだろうか?


314:デフォルトの名無しさん
07/12/05 18:08:23
>>305-306 できました。ありがとうございます。

315:デフォルトの名無しさん
07/12/05 19:45:45
URL が多数含まれる文章があるとき、その URL にマッチさせる正規表現を知りたいです。
マッチさせるのは “http://~/” の部分で充分でして、それだけなら http:\/\/[^\/]+\/ でイケそうです。
ただ今回やりたいのは、特定のドメイン(というかサーバ)の URL はマッチさせない、ということです。
たとえば URLリンク(www.google.co.jp) にはマッチさせたくない、ということです。
これはどんな書き方になるでしょうか?
Perl な正規表現だと具合いいです。

316:デフォルトの名無しさん
07/12/06 06:31:42
>315

>2

317:デフォルトの名無しさん
07/12/07 07:08:24
フリーでとにかく早いのってどれ?
秀丸のやつ?鬼車?

318:デフォルトの名無しさん
07/12/07 23:18:36
秀丸は速くない。

319:デフォルトの名無しさん
07/12/08 14:11:45
>>317
秀丸のは確かに速い

速いけど、他で出来て秀丸で出来ない表現が多いし
それを無理やり秀丸で表現すると結局遅くなることも多い

320:デフォルトの名無しさん
07/12/08 23:27:27
[0-1]?[0-9]
これで2桁目に0か1が付くか付かないか
という表現になりますか?

321:デフォルトの名無しさん
07/12/08 23:32:07
日本語でおk
それだと、0~9 と 00~19 にマッチ

322:デフォルトの名無しさん
07/12/08 23:38:08
すみませんここで聞いて良い事なのか解らないのですが、よければお教えください。
C/Migemo 1.2 リリース版 for Windowsに付属の辞書を読み込ませhoをmigemo_queryしてみたことろ
([ホ☆★ほ逋捕縫豊B萠萌]|ho|Ho)と、なぜかBが含まれた文字列がかえってきました。
この文字列を利用して検索をすると当たり前ながらBに反応してしまうのです。
そこで質問なのですが、どうしてBが含まれるのでしょうか?
もしかして私の使い方が間違っているのでしょうか?

323:320
07/12/09 00:14:35
>>321
すいません、それが言いたかった
ありがとう

324:デフォルトの名無しさん
07/12/09 00:33:23
>>323
「すみません」だろ
日本から出て行けよ

325:デフォルトの名無しさん
07/12/09 00:50:18
こらこら

326:デフォルトの名無しさん
07/12/09 01:08:50
>>322
完全にスレ違いな気がするが、どこが適切か知らないので一応答えておくと、
ホウ素の元素記号がBだから。他にはsaで酸素のOが引っかかったりするはず。

327:デフォルトの名無しさん
07/12/09 01:41:55
>>326
おおおおおおお!
なるほど…
おかげで謎が解けました
ありがとうございました。

328:デフォルトの名無しさん
07/12/18 00:38:45
ひゃ[あぁ゛]*うまひ[いぃ゛]*

329:デフォルトの名無しさん
07/12/18 01:09:55
ひゃうまひ゛

330:デフォルトの名無しさん
07/12/18 04:59:57
ひゃ゛゛゛゛゛うまひ゛゛゛゛゛゛゛

331:デフォルトの名無しさん
07/12/18 12:24:04
/image/[00-31]_[00-1f].jpg
     ↑00~31↑00~1f(16進数)
正規表現でこのように設定したいのですがうまくいきません。

/image/(00_00、01_01・・・10_0a・・・31_1f)
こういったものを書きたいのですが可能でしょうか?

332:デフォルトの名無しさん
07/12/18 12:29:21
>>331
[] は一文字にしかマッチしないのでー。
正規表現はふつうは数値の範囲は指定できないのでー。

([0-2][0-9a-f]|30|31)_[01][0-9a-f]\.jpg


333:デフォルトの名無しさん
07/12/18 13:19:37
>>331
もしかして、 10進部分と 16進部分を対応させたいと思ってる?
それだと正規表現だけでは簡単に書けないと思う。

334:デフォルトの名無しさん
08/01/05 11:31:41
日本語の話しになってしまいますが、質問させてください。

>検索対象に正規表現が一致した場合

>検索対象が正規表現に一致した場合
どっちが正しいのでしょう?

前者が正しいような気がするのですが、よく判らなくなってきました

335:デフォルトの名無しさん
08/01/05 12:04:31
一致というよりマッチといいましょう。

336:デフォルトの名無しさん
08/01/05 17:24:34
そういえばどっちも言うような気がする。
文脈によるというかどっちを軸に語るかによるんじゃないかな。

337:デフォルトの名無しさん
08/01/05 17:36:47
厳密に言うと受理だろうが、気にしすぎだとも思う

338:デフォルトの名無しさん
08/01/05 21:41:39
プログラムの 「前」 ってどっちですか?

339:デフォルトの名無しさん
08/01/05 21:42:19
つまらんコピペだな

340:デフォルトの名無しさん
08/01/05 21:45:36
じゃね? => ぢゃね?

341:デフォルトの名無しさん
08/01/06 14:50:28
ここのFAQの中の手作業でNFAを作成ってページなんだけど
URLリンク(capslockabcjp.kitunebi.com)
/***/にマッチしないきがするけど。

342:デフォルトの名無しさん
08/01/06 15:05:50
だからなんだよ。

343:デフォルトの名無しさん
08/01/06 15:29:12



344:334
08/01/06 15:59:55
レス有難うございます。やっぱり気にし過ぎですかね。
気にしない事にします。

345:デフォルトの名無しさん
08/01/06 23:17:00
if (ch == '/') st = 1;
else if (ch == '*') st = 4; // 追加
図のほうに
S4->S4 [label="*"];
だね

346:デフォルトの名無しさん
08/01/07 00:05:54
>検索対象(の文字列)が正規表現(で表されたパターン)にマッチした場合
パターンは固定だから、俺はこっちがしっくりくる

347:デフォルトの名無しさん
08/01/10 03:38:22
"one two three four"
"one three two four"
にしたいのです。正規表現でスワップ(位置交換)したいんですが
ググってもあんまりなかったです。

一応、java.util.regex.*; 使ってます。

348:デフォルトの名無しさん
08/01/10 03:41:41
"one two three four five" 
"one four three two five" 
1 2 3 4 5
1 4 3 2 5
でした。

349:デフォルトの名無しさん
08/01/10 16:36:35
Pattern pattern = Pattern.compile("^(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)\\s+(.*?)$");
Matcher matcher = pattern.matcher("one two three four five");
String str = matcher.replaceFirst("$1 $4 $3 $2 $5");

とりあえず

350:デフォルトの名無しさん
08/01/10 17:42:18
>>349
おお、ありがとうございます。
java.util.regex.Pattern; のAPI見ても \1 は載っていても、$1 は載ってなかったんですができるんですね。

ところでAPI(java, perl, ruby, js)見ても良く分かり辛いのですが、\n, $n のnはいくつまで参照できるんでしょうか。

nは10進表記みたいですけど、
\0
- 1から9までは dec
\1 ... \9
- dec
\10, \11 ... \21
- oct
\010, \011 ... \025

\0nnn とすれば自動で8進表記
\nnnn とすれば自動で10進表記

参照は \1 <=> $1

API(java)ではこういう感じみたいなんですけど実際はどうなんでしょうか。

351:デフォルトの名無しさん
08/01/10 21:27:54
"\1" じゃなく、"\\1" じゃないのかな。

java コンパイル ⇒ 正規表現コンパイル
つまり2回コンパイルされる事に注意。
ここらへんの理屈がわかってないとツライよ。

352:349
08/01/11 00:55:38
>>350
とりあえず最大数は気にしなくていい、[\$]1000とかでもいけるように見える
Petternクラスでは0始まりは8進数になるけど、Matcherクラスでは10進のまま
PetternのescapeとMatcherのappendReplacementあたりのソースを見るといい
うまくまとめられてないけど、2ch止まるらしいので今のうちに書いとく

353:デフォルトの名無しさん
08/01/11 17:24:33
APIソース見てるんですか!
そこまで頑張らなくてもどこかにあるJavaのフォーラムで質問した方がいいんじゃないですか?


354:デフォルトの名無しさん
08/01/11 17:39:56
質問者よりも回答者の方が問題解決に躍起になってるスレ。

355:デフォルトの名無しさん
08/01/11 20:10:07
sedを使ってC言語のコメントを全て削除するにはどうやればいいんですか?
コメントが1行に収まっているなら簡単なんだけど、複数行にまたがる場合にどうすればいいかわからない

356:デフォルトの名無しさん
08/01/11 20:22:05
>>355
パターンスペースとホールドスペースを駆使すればできなくはないが、お勧めできない。
awkかperl、或いは最近のスクリプト言語を使う方がいい。

357:デフォルトの名無しさん
08/01/12 08:24:05
俺には無理ぽ
---------------------------------------
# decom.sed
/\/\*/ {
:loop
/\*\// { b break }
N
b loop
:break
s/\n/ /g
s/\/\*.*\*\///g
}
---------------------------------------

358:デフォルトの名無しさん
08/01/12 08:30:01
URLリンク(main.rtfiber.com.tw)
ちょろっと探したらすぐ見つかったしorz

359:デフォルトの名無しさん
08/01/12 09:21:03
でも>358だと文字列中の/*にも反応しちゃうんだよね。
本格的に使うのは、ちょっと無理。

360:デフォルトの名無しさん
08/01/12 09:51:59
プリプロセッサ指令をプリプロセスで消されないよう加工
 ↓
プリプロセッサにかける
 ↓
加工したプリプロセッサ指令を元に戻す

361:デフォルトの名無しさん
08/01/14 12:03:15
正規表現のエスケープしなくてもいい記号がわからないので、
とにかく記号という記号はエスケープしていて結構カオスになっているのですが、
エスケープしなくてもいい記号一覧とかどっかにありませんか?
!"#$%&'()-=^~\|@`[{;+:*]},<.>/?_
これが
\!\"\#\$\%\&\'\(\)\-\=\^\~\\\|\@\`\[\{\;\+\:\*\]\}\,\<\.\>\/\?\_
こんな感じに・・・

362:デフォルトの名無しさん
08/01/14 12:22:13
半角スペースって普通に半角スペースをいれるか\x20とかくかどっちがいいんですか?

363:デフォルトの名無しさん
08/01/14 12:23:19
普通に半角スペースを

364:デフォルトの名無しさん
08/01/14 12:40:39
>>363
レスありがとう。
普通に半角スペース使うことにしますね。

365:361
08/01/14 15:43:29
完全かどうかはわかりませんがWikipediaにのってました。
というわけで自己解決しました。

366:デフォルトの名無しさん
08/01/14 18:31:15
>362

\s


367:デフォルトの名無しさん
08/01/14 18:36:27
>>366
秀丸じゃ使えないんだよな

368:デフォルトの名無しさん
08/01/14 18:37:44
>>366
つーか、それホワイトスペース一般じゃないか?

369:デフォルトの名無しさん
08/01/14 18:55:23
ホワイトベースに見えた

370:デフォルトの名無しさん
08/01/14 19:43:17
セイラさんにハァハァしすぎw

371:デフォルトの名無しさん
08/01/14 20:00:29
\s は改行にもマッチすることがあるから
半角スペースの代わりにはならないよ

372:デフォルトの名無しさん
08/01/14 22:22:22
特定の英単語が含まれているかをチェックする正規表現を教えてください。
This is a pen.
に対してhisをチェックした場合に引っかからないのが正しいです。

英単語の定義は[A-Za-z]{3,}とする予定で、単語の間はカンマやハイフン、セミコロンなどもあり。
前後が[^A-Za-z]だけだと行頭行末がダメ。。。


373:デフォルトの名無しさん
08/01/14 22:23:48
>>372
\b

374:デフォルトの名無しさん
08/01/14 22:28:09
非語境界ってやつだな。

375:372
08/01/14 22:28:22
>>373
ありがとう。知らんかった。首吊ってくるわ。。。

376:デフォルトの名無しさん
08/01/14 22:41:54
イ㌔

377:デフォルトの名無しさん
08/01/14 22:44:30
\sはタブにもマッチするな
まあ既に>>368が言ってるけど

378:デフォルトの名無しさん
08/01/17 16:41:25
こんにちは。質問です。

@book{sagan:1954,
author = {Fran\c{c}ois Sagan},
title = {Bonjour Tristesse}
}

こんな感じの文字列(BibTeX)を取り込んでハッシュにするためには
どのような正規表現を用いればよいでしょうか。

ポイントは
 1. コンマで分割する。
 2. {}の中のコンマは無視する。
というあたりだと思うのですが、特に括弧の入れ子をどう処理するかで困っています。

使用言語はRubyです。よろしくお願いします。

379:デフォルトの名無しさん
08/01/17 19:22:45
正規表現は再帰をあつかえない。即ち括弧の対応を確かめることが出来ない。
上限をハードコードするなら可能ではあるが、普通にパーサを書いたほうがいいと思う。

380:デフォルトの名無しさん
08/01/17 21:31:48
新しいPerlへようこそ

381:デフォルトの名無しさん
08/01/18 13:21:50
>>380
新しい Perl でも、正規表現 *だけ* では無理じゃね?

382:デフォルトの名無しさん
08/01/18 19:34:46
ソースコードやXMLはネスト構造を持つから正規表現は向かないよな。
Javaとかもソースコードパーサー用の汎用クラスがあるけど、何故か使われなかったり。
BNF法の知識がデベロッパレベルで浸透してないから、無理も無いけど。

383:デフォルトの名無しさん
08/01/24 09:57:54
仕用言語はPHP5.2.4です。UTF-8での運用をしております。
テキストの中のURLをリンクしたいのですが、

$pat = "(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep = "<a href=\"\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat, $rep ,$body);

これだと、2ちゃんねるみたく、ttp:から始まったURLの場合リンクできません。
無駄だと思いつつも書き方がわからないので、下記の処理を付け加えましたが、
 <a href="hoge">hoge</a>
↑この部分が何故か文字化けしてしまいます。

$pat2 = "[^h](ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

スマートに書く方法を教えてください。

384:デフォルトの名無しさん
08/01/24 10:34:25
すまない
ageさして下さい

385:デフォルトの名無しさん
08/01/24 10:51:13
>>383
[^h] じゃなくて h? じゃない?

386:デフォルトの名無しさん
08/01/24 11:20:57
>>385
㌧です
ご指摘のように

$pat2 = "h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)";
$rep2 = "<a href=\"h\\1\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

こうすることで動きました
ありがとうございました

387:デフォルトの名無しさん
08/01/24 14:34:41
h?っていらなくない?

388:デフォルトの名無しさん
08/01/24 14:46:58
http: ってちゃんと書いたときに h が増殖しちゃわない?

389:388
08/01/24 14:51:28
スマソ、勘違い。

h? を省くと、 http: ってちゃんと書いたときに、こんなふうに h が出てきちゃう。
h<a href="URLリンク(hoge)<)</a>

390:デフォルトの名無しさん
08/01/24 21:19:55
全体を括弧でくくってそれをテキストに指定、
内側のh?(~~をリンクに指定すればいいと思う。

391:デフォルトの名無しさん
08/01/24 21:49:52
$test = '<a href="URLリンク(localhost)">LINK29</a>';
$test = preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}' ,page_href('$1') ,$text);

上記の正規表現で得た29という数字をpage_hrefという関数に渡したいです。
29という数字は取れているみたいですが、関数内には29という数字が渡ってきておりません。
preg_replace内でどうすれば関数に数字を渡せますか?

ちなみにPHP5系です。

392:デフォルトの名無しさん
08/01/24 21:52:25
preg_replace内の$textは$testです
すみませんでした

393:デフォルトの名無しさん
08/01/24 23:30:33
>>390
kwsk

394:デフォルトの名無しさん
08/01/24 23:58:17
>>393
$pat2 = "(h?(ttps?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+))";
$rep2 = "<a href=\"h\\2\" target=\"_blank\">\\1</a>";
$body = ereg_replace($pat2, $rep2 ,$body);

↑こういうことじゃね?

395:デフォルトの名無しさん
08/01/25 00:14:49
>>391
そのくらいの正規表現ならPHP使いなら大抵知ってるからPHPスレでいいと思うよ

で、関数に引数を渡すにはその引数を評価してからじゃないと渡せない
というわけでまずは preg_replace() の引数である page_href('$1') を評価する
でもこの時点で preg_replace() は評価されてないので $1 は未定義

preg_match() を使って二つに分けて書くのが普通だろうけど
どうしても preg_replace() ひとつで済ませたい場合は e 修飾子を使ってこう書く

$test = '<a href="URLリンク(localhost)">LINK29</a>';
print preg_replace('{<[Aa] .+?>LINK([1-9][\\d\\-]*)</[Aa]>}e', 'page_href($1)', $test);

ただこういう謎コード書いて冷たい目で見られても知らない

396:デフォルトの名無しさん
08/01/27 10:16:29
BREGEXPのC言語のラッパーライブラリがあったら教えてください。
BREGEXPでなくても他に使いやすいライブラリがあれば教えてください。

397:デフォルトの名無しさん
08/01/27 11:14:06
C 言語なら PCRE とか鬼車で良いのではないかと。

398:デフォルトの名無しさん
08/01/27 12:52:37
>>396
元々Cだしなぁ。ラッパーに何を期待してる?

それはそれとして、素のBREGEXPは古いのでやめておいた方がいい。
いくつかバグも見つかっているようだし。せめてbregonigにすべきかと。

399:デフォルトの名無しさん
08/01/27 12:55:52
RE *re = ReCompile("/(\d+)/");
if(ReMatch(re, s)) { printf("%s", re->d1); }
ReFree(re);

これくらい簡単なのは確かに欲しい。

400:デフォルトの名無しさん
08/01/27 18:22:16
みんながCのアプリをC++でコンパイル通してくれればfreeもなしで
if (/([0-9]+)/ == str) ...
こうできるけどね。

クラス定義とかしなくていいからさぁ、
C++のランタイムにしてくればモジュール提供する側がラクなんだよなぁ

401:デフォルトの名無しさん
08/01/27 19:22:38
世の中の全てプログラム言語はC++でいいと?

402:デフォルトの名無しさん
08/01/27 19:37:07
C99

403:デフォルトの名無しさん
08/01/29 14:08:08
a b c
aa bb cc
aaa bbb ccc

これのインデントあわせって正規表現だけでできますか?perlです。

404:デフォルトの名無しさん
08/01/29 14:41:11
<A HREF="URLリンク(hogehoge.jp)">URLリンク(hogehoge.jp)
<A HREF="URLリンク(hogehoge.jp)">URLリンク(hogehoge.jp)
…以下続く

という文字列があるのですが、**************の部分に暗号化された文字(例:=7%be%8e%e4)が50文字くらい並んでいて
毎回文字数や形式が変動してしまいます。

<A HREF=" のほうはいいのですが、 HTML上に表示される文字のほうも暗号文字になってしまうので困っています。

正規表現で、HTML上に表示される文字のほうだけ、「リンク」という文字に変える方法はありますでしょうか?

405:デフォルトの名無しさん
08/01/29 15:32:43
>>403
右寄せ?左寄せ?
まあ無理なんじゃない
>>404
pack形式と実行環境書け

406:405
08/01/29 15:42:18
>>404の例は「美人」だと思われるが、それでいいのか?
あとhogehogeやめれexampleにしろ

407:デフォルトの名無しさん
08/01/29 15:55:11
>>404です

実はプログラミングを知らないので、実行環境はテキストです…
秀丸でできればおkです…

408:デフォルトの名無しさん
08/01/29 19:56:06
>>403
正規表現では無理だろう。

幅固定なら awk が楽だが、
最長のに合わせるんだったら perl で普通に
ガシガシ書いてきゃいいんじゃね?

409:デフォルトの名無しさん
08/01/30 00:44:52
perlでweb製作しています。

$txt の中の

href="URL" の中のURLを
http:example.net/test.cgi?url=エンコードしたURL
の形に一括変換したいです。

たとえば
href="URLリンク(search.com)"
href="http:example.net/test.cgi?url=http%3A%2F%2Fsearch.com%2Fstr.cgi?%2Fsearch%3Ffirst%3D1%26p%3D%25BA%25C7%25B9%25E2"
のようにしたいです。

$txt内には複数のhref=""があり、href=""外にもURLがあり、その部分は変換不要です。


$cgi = "http:example.net/test.cgi?url=";
$txt =~ s/(href\=\")([\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%\$]*\")/$1&cgi$2/g;

$2の部分をエンコードすればよさげなのでエンコード法を調べてみましたが↓を↑に組み込み方がわかりません。
どなたか、お教えください。
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;



410:デフォルトの名無しさん
08/01/30 01:18:38
use strict;

my $txt = <<TXT;
href="URLリンク(search.com)"
href="URLリンク(search.com)"
TXT

$txt =~ s{(?<=href=").*?(?=")} {
no locale;
sprintf q{http:example.net/test.cgi?url=%s},
do{$_ = $&; s/([^\w ])/'%' . unpack('H2', $1)/eg; tr/ /+/; $_}
}eg;

print $txt;

411:デフォルトの名無しさん
08/01/30 01:26:23
>>410
THANKS

なんか、できそうですが、PERL事態初心者で構文自体は理解できませんorz

412:デフォルトの名無しさん
08/01/30 11:34:55
echoが含まれない行の検索って、java正規表現でできますか?

^.(?<!echo)*$ ではできませんでした。

413:デフォルトの名無しさん
08/01/30 11:45:01
>>412
すいません。できました。
下の2つともできたのですが、「.」のおく位置で何か違いはあるのでしょうか?

^(.(?!echo))*$
^((?!echo).)*$

414:デフォルトの名無しさん
08/01/30 13:56:44
それ上手く動かないだろ

415:デフォルトの名無しさん
08/01/31 01:40:06
ふつうは^(?!.*echo)
これでだめなら ^(?!.*echo).*でもいい

>>413
1つ目はダメ。たとえば次のような行:
echo
このeを.で評価したとき、継続の文字はcho。
echoという文字が続いているわけじゃないから、マッチは成功してしまう。
2つ目はうまくいくだろう。

416:デフォルトの名無しさん
08/02/01 00:31:08
質問です、PHPにおいてファイルパスの正規化をしています。

// テスト文字列、"/test/oame/doe/0"にしたい。
$location = "/test/./oame//doe/abc/../0/";
// 置き換え部分
$location = ereg_replace("//+","/",$location); /* "//" -> "/" */
$location = ereg_replace("/\./","/",$location); /* "/./" -> "/" */
$location = ereg_replace("/.+?/\.\./","/",$location); /* "/___/../" -> "/" */
$location = ereg_replace("/$","",$location); /* 末尾の"/"を削除 */

ereg_replace3番目の、/../の処理がうまくできていません、
$locationが空になります。これはどのように記述したらいいのでしょうか?

417:デフォルトの名無しさん
08/02/01 00:51:28
$location="/test/./oame//doe/abc/../0/";
$x=$location.split('/');
$location='/'+$x[1]+'/'+$x[3]+'/'+$x[5]+'/'+$x[6]+'/'+$x[8];



418:デフォルトの名無しさん
08/02/01 01:15:56
phpよく知らんけどこんなとか?

$location = ereg_replace("/[^/]+?/\.\./","/",$location); /* "/___/../" -> "/" */

419:416
08/02/01 02:04:34
どうもPHP固有の仕様に関することかもしれないので、
そっちで聞いてみたいと思います。
どうもありがとうございました。

420:デフォルトの名無しさん
08/02/01 13:56:31
.(?!xx)* は.*中に「xx」がない、との解釈になるのでしょうか?


よって下記とは異なる、でよろしいでしょうか。
(?!xx).*

421:デフォルトの名無しさん
08/02/06 19:08:06
正規表現で遊べないかと考えていたんけど、みさくら語を正規表現で表すとしたらどうやる?

422:デフォルトの名無しさん
08/02/06 19:56:32
ぐぐったら出てくるじゃないか
URLリンク(home.1555.info)

とりあえず上のJavaScriptの意味を調べてみては
その過程で正規表現より他に必要なものが見つかるはず

423:デフォルトの名無しさん
08/02/07 09:29:34
マッチさせた後どう処理するかの方が肝なので、正規表現だけ考えても仕方ないかと。

424:デフォルトの名無しさん
08/02/07 21:45:00
蒲焼《か はやき》
深川《ふか がわ》
↑のような《》に挟まれた半角スペース、全角スペースを指定する正規表現はどう書けばいいか教えて下さい。よろしくお願いします。

425:デフォルトの名無しさん
08/02/08 03:36:32
>>424
>>1

426:デフォルトの名無しさん
08/02/08 17:50:02
********aaa aa *
****age p * kk **
*aaaa
のようなものの*を行頭から連続している部分だけ-に換えたいんですが
--------aaa aa *
----age p * kk **
-aaaa
こういうような二重絞り込みみたいなものってperlのワンライナーでやる方法が知りたいです
perl -pe '/^[\*]*/ & tr/*/-/'
みたいな感じで条件を合成できそうな気がするんですが

427:デフォルトの名無しさん
08/02/08 18:02:31
perl -pe 's/^\**/q{-} x length($&)/e'

428:デフォルトの名無しさん
08/02/08 18:46:33
どうもありがとうございました
正規表現だけじゃできないんですね
perlも勉強することにします

429:424
08/02/08 19:34:16
ソフトは秀丸使ってます。実装言語とかよくわかりません。

430:デフォルトの名無しさん
08/02/08 19:58:15
テンプレのサイトで少しは勉強してきなよ

431:デフォルトの名無しさん
08/02/08 20:10:24
やってみって《》とその中までは指定できたけどその先がよくわからんのです。

432:デフォルトの名無しさん
08/02/08 20:27:02
[《 》]
↑だと《》も一緒に指定してしまうし、だめだ。

433:デフォルトの名無しさん
08/02/09 01:36:18
あきらめてこれで検索したら?
\f《[^《]*\f \f[^》]*》\f
置換するなら"\1置換後文字\3"とかで指定すればいいんだし。

434:デフォルトの名無しさん
08/02/12 01:09:08
phpなんですが、たとえば
$a = "aiueo";
$b = "aiu";
と、あるときに
変数$bの中身(aiu)が$aに含まれるかを調べたいんですがどうしたらいいでしょうか。

435:デフォルトの名無しさん
08/02/12 01:17:22
strstr

436:434
08/02/12 11:16:40
わかりました!ちょっと難しく考えすぎていたようです。
正規表現使う必要ないんですね。
ありがとうございます。

437:デフォルトの名無しさん
08/02/13 00:28:11
・・・これだ

438:デフォルトの名無しさん
08/02/13 15:18:34
phpです。
htmlファイル中の
<p>
test
あああ
いいい
ううう
</p>
を preg_match('/<p>((.|\n)+)<\/p>/', $source, $test); でマッチさせると
$test[0]には全体、[1]には一致した部分が入っていて正しいのですが
[2]に空白も入ってしまっているようです。
Array
(
[0] => <p>
test
あああ
いいい
ううう
</p>
[1] =>
test
あああ
いいい
ううう

[2] =>

)
このようになります。
上手く間にある文字列だけをマッチさせる方法はないでしょうか。

439:デフォルトの名無しさん
08/02/13 15:26:34
>>438
二個目のカッコ (.|\n) にマッチした箇所がキャプチャされてるね。
後方参照されないように (?:.|\n) とか。 ?: の意味は自分で調べて。

440:デフォルトの名無しさん
08/02/13 15:34:54
素早いレスありがとうございます。調べてみます。

441:デフォルトの名無しさん
08/02/15 18:54:31
Perl5.6でIPアドレスの範囲と場所をマッチングさせたいと思っています。

192.168.1.* を東京
172.16.0.* ~ 172.16.3.* を大阪

という場合はどのように判定させればいいのでしょうか。
Perl歴3日目なもんで・・・どなたかお力を。

442:デフォルトの名無しさん
08/02/15 19:00:38
とりあえず、正規表現でやろうとするのは間違ってますよ。
split /\./ してからごにょごにょするか、
CPANのNetAddr::IPのようなモジュールが使えないか検討してください。

443:デフォルトの名無しさん
08/02/15 19:04:12
なるほど。分けてから比較するんですね。
方向性が分かっただけでも助かりました。
ありがとうございました。

444:デフォルトの名無しさん
08/02/15 20:05:50
そういう場合はサブネットマスク使ったほうが綺麗にかけるぞ

445:デフォルトの名無しさん
08/02/15 22:54:30
255.255.252.0とかで切っててもいけるもんなんですか?

446:デフォルトの名無しさん
08/02/16 13:40:36
bitでかんがえてみろ

447:デフォルトの名無しさん
08/02/19 10:54:06
テキストエディタで検索・置換をするのに
特定のワードで始まる行末7文字の指定はどう書けばいいでしょうか?

それとDOSのワイルドカードだと
AA○○.txt
AA××.txt
とあったときren AA*.txt BB*.txtとすれば
BB○○.txt
BB××.txt
となったと思うのですが、正規表現でも同様な事ができますか?
こちらもテキストエディタでの検索・置換です

448:デフォルトの名無しさん
08/02/19 15:07:30
PHP正規表現チェッカー
URLリンク(www.rider-n.sakura.ne.jp)


449:デフォルトの名無しさん
08/02/19 17:34:36
>特定のワードで始まる行末7文字の指定
これの意味がわからない、例を出せ例を

450:デフォルトの名無しさん
08/02/19 17:36:10
テキストエディタっつってもできることできないこといろいろあるので
具体的なソフト名を出した方が回答が得られやすいと思われ。

451:デフォルトの名無しさん
08/02/19 17:48:38
コミュニケーション能力が不足しているな。
エディタの使い方とか正規表現とか覚える前に
人間として最低限必要な事を先に覚えたほうがいいんじゃない?

452:447
08/02/19 17:55:55
答えられないカスどもは黙っててください
わかる人だけが、質問に答えてくれればいいです
では引き続きよろしくお願いします

453:デフォルトの名無しさん
08/02/19 18:07:23
晩飯なににすっかなー

454:デフォルトの名無しさん
08/02/19 18:37:56
サンマの缶詰が安かったから、これで炊き込みごはん。
米1合を洗ってダイソーで買った105円の土鍋に入れる。
そのままサンマの缶詰1缶まるごとブチ込む。
水加減は、缶詰の水分と合わせて200mlくらいになるように調節。
30分くらい浸して火にかける。
最初は中火より強め。5分くらいで吹いてくるから弱火にして、さらに5分。
(赤子泣いてもフタ取るんじゃないぞ)
炊き上がったら5分むらす。
缶詰はサンマでなくても、鯖とかイカとか赤貝とか、好みのでOK。
味が濃い目の缶詰がいいな。味が薄いときは醤油や砂糖やみりんを加えてから
炊くといいよ。

455:447
08/02/19 18:40:47
エディタはJedit X1.11です

例)
あああ~~~1234567
いいい~~~1234567
………
………

~~~は文字数などもバラバラな任意な文字列(全角含む)

行頭『あああ』で始まる行の、行末『1234567』を
別の文字列『abcd』等に置換したいのです


456:デフォルトの名無しさん
08/02/19 18:43:41
あああ腹へったなー

457:デフォルトの名無しさん
08/02/19 20:02:10
(?<=あああ).*(?=.{7}) -> abcd

458:447
08/02/19 21:51:39
>>452
おいおい気がついたらとんでもない事勝手に書いてるな~(苦笑

>>457
ありがとうございます
戻り読みと先読みですか、なるほど!
ですが、これだと『~~~』の部分になってしまいますよね……

459:デフォルトの名無しさん
08/02/19 23:38:16
1合炊きの土鍋なんてあるのか
今度ダイソーに行ったら見てみよう

460:デフォルトの名無しさん
08/02/19 23:44:48
>>459
中国製の土鍋なんてどんな毒が混ざってるか分からんぞ。

461:デフォルトの名無しさん
08/02/20 00:38:19
ニ○リの土鍋以外にでたっけ

462:デフォルトの名無しさん
08/02/20 08:47:18
>>452
こういうことすぐ言う人って、昔いじめられてた人なんでしょ?可哀想にね

463:デフォルトの名無しさん
08/02/20 11:24:13
めんどくさがりなので俺なら↓でやってしまうな
/^(あああ.*?)(.{7})$/\1abcd/

464:447
08/02/21 18:24:17
>>463
ありがとうございます

いろいろ調べながらやってますがダメなようです
もうちょっとがんばってみます

465:デフォルトの名無しさん
08/02/21 18:30:35
せっかくヒントもらえたんだし、頑張ってもらわんとな

466:デフォルトの名無しさん
08/02/22 00:06:24
>>396
いまラッパーつくってるよ
ちょっとまてて

467:デフォルトの名無しさん
08/02/22 13:22:33
2008-03 発売(予定)
「詳説 正規表現 第3版」 (Jeffrey E.F. Friedl 著 / 長尾高弘 訳)
ISBN 978-4-87311-359-3 定価 5,040円

468:デフォルトの名無しさん
08/02/22 16:48:39
おや、和訳出るのね。今回は田和さんじゃないんだ
もったいない気もするがロングテールの人なら鉄板か

469:466
08/02/22 21:49:08
できましたよ 使ってみてください サポートはここで
URLリンク(fx10.web.fc2.com)

470:デフォルトの名無しさん
08/02/23 03:35:41
>>468
原書では追加はPHP関連とかがあったけど、以前のものからの改訂部分って
ほとんどなかったんだよね。
訳しなおしてるのかなあ?



471:デフォルトの名無しさん
08/02/23 20:12:38
php4なのですが、
<img src="new.gif" alt="New" width="10">
を正規表現で置換してaltの値だけを表示にすることは出来ませんでしょうか

よろしくお願いします

472:デフォルトの名無しさん
08/02/23 20:21:04
<img src=\".*?\" alt=\"(.*?)\".*?>
\1
でできたよ

473:デフォルトの名無しさん
08/03/05 20:28:49
秀丸で検索するときに文字列Aを含んで且つ文字列Bを含まない行全体を指定したいのですが、
(含む行)       ^.*文字列A.*\n
(含まれない行)   ^((?!文字列B).)*\n
で個別にはわかるんですがこの2つを合わせてて検索したいのですがどう書けばいいのでしょうか?

474:デフォルトの名無しさん
08/03/05 23:21:55
(^.*文字列A.*\n|^((?!文字列B).)*\n)

475:デフォルトの名無しさん
08/03/05 23:22:43
あ、間違えたわ

476:デフォルトの名無しさん
08/03/06 01:07:25
  dll
| ^
  dll

477:デフォルトの名無しさん
08/03/07 08:06:30
微妙にイケメソがいるな

478:デフォルトの名無しさん
08/03/07 08:12:32


479:デフォルトの名無しさん
08/03/07 08:35:28
(6
  ’)
(6


480:デフォルトの名無しさん
08/03/07 17:01:30
質問です。
小数点以下の右端の0を全部取り除きたいです。
小数点以下が0しかない場合は、小数点も含めて取り除きたいです。

3.00 → 3
3.02000 → 0.02

どう書けばよいでしょうか?
sprintf("%g", num) とすればいけるかと思いましたが、numが19120730.0000の場合に
1.91207e+07となり、使えませんでした。
perl5.8です。宜しくお願いします。



481:デフォルトの名無しさん
08/03/07 17:04:54
      ____
      // ̄ ̄`|
     /|断 だ |
     / |る が |
    /イ \___|
    / |// /| |
   /_\ /_/_レ|
   ∧o>/ イ≡三\|
  /ミ// r-<彡/|
  / /彡 ヾ\_O> |
 /iハ-イ)   ̄ヽ彡|
`/ i∧二    // |
/ (`ーv\  // /|
`<j`ーヾ_ゝ // (r|
  `<  ノ  /リ|
    `<  //7|
      `</ / |
        `<|


482:デフォルトの名無しさん
08/03/07 18:16:02
正規表現関係ないな。脳みそつかえ

483:デフォルトの名無しさん
08/03/07 20:32:03
>>480
s/\.?0+$//


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