正規表現 part4at TECH
正規表現 part4 - 暇つぶし2ch700:デフォルトの名無しさん
08/04/13 17:07:31
先読み使える言語なら、それで一発では?

701:デフォルトの名無しさん
08/04/13 17:26:35
\d+(\d|\w|[-_])*\w+(\d|\w|[-_])*|\w+(\w|\d|[-_])*\d+(\d|\w|[-_])*|[-_](\d|\w|[-_])*\w+(\d|\w|[-_])*

702:デフォルトの名無しさん
08/04/13 21:26:46
教えて欲しいのですが、この /(?<=\{\s*)/ が perl に怒られるのはなぜでしょうか
* をはずすと特に問題は無いのですが

703:デフォルトの名無しさん
08/04/13 21:33:31
>>702
エラーメッセージでてるだろ。
そこに理由が書いてあるから読めよ。

704:デフォルトの名無しさん
08/04/14 07:33:27
>>701
サンクス試してみる。

705:デフォルトの名無しさん
08/04/14 08:25:50
別々にマッチした方が良くね?



706:デフォルトの名無しさん
08/04/14 22:46:37
だな。おれもそうする。

どんなプログミング言語で書いてるのかわからんけど
if ($password =~ m/^[A-Za-z0-9_\-]+$/
&& $password =~ m/[0-9]/
&& $password =~ m/[A-Za-z]/) {
  ほげほげ・・・
}
みたい書いたほうが、どんな言語にも応用がきくし
あとのメンテナンスも楽だしな。
どうしても無理やり1つにまとめなきゃいかん事情があるんなら別だが。

707:デフォルトの名無しさん
08/04/16 01:54:40
VC++ 2005、WinXPで開発をしています。
正規表現を扱えるライブラリを探しています。
出来れば、charとwchar_tの両方に対応しているものが欲しいと思っています。
片方なら、boostでいいと思うのですが……

どなたか、ご存知の方教えてください。

708:デフォルトの名無しさん
08/04/16 07:19:25
"abc__def__ghi__jkm"という文字列があるとして、
この文字列中の「__」を任意の数だけ半角スペースに置換するという場合
(1が指定されたなら1つ、2が指定されたなら2つというように)、どのような記述になるのでしょうか。
使用言語はPerlです。

oオプションを指定して評価を1度だけにし、ループで回す、という方法は考えたのですが、
可能なら正規表現のみで完結させたいです。

どなたかご存知でしたら教えていただけないでしょうか。
よろしくお願いします。

709:デフォルトの名無しさん
08/04/16 07:48:59
perlなら_でsplitしてjoinしたほうが速いような。

710:デフォルトの名無しさん
08/04/16 10:45:45
正規表現でバッチ処理的な事したとき最速なのってやっぱperlか?

711:デフォルトの名無しさん
08/04/16 13:58:17
ruby

712:デフォルトの名無しさん
08/04/16 14:20:48
まじか。ruby早いのか

713:デフォルトの名無しさん
08/04/16 14:24:48
perlの方が糞速いよ

714:デフォルトの名無しさん
08/04/17 04:26:31
2ちゃんではurlを書き込むと自動的にリンクが貼られますが、
2ちゃん外のurlだとhttp://がURLリンク(ime.nu)に置換されます
urlが2ちゃん内か外かを判断するにはどうやっているのでしょうか。

urlかどうかを判断し、リンクを貼るところまではネットで調べて↓のようにできたのですが、続きがわかりません。
ereg_replace("(http)(://[[:alnum:]\S\$\+\?\.-=_%,:@!#~*/&]+)","<a href=\"\\1\\2\">\\1\\2</a>",$str);

どうかよろしくお願いします。

言語はPHPです。


715:デフォルトの名無しさん
08/04/17 07:00:53
2chの中だったら
2ch.netというURLが必ず入るわけだから、
それが含まれている文字列にマッチするかしないかを確認すればいだけじゃないの

716:デフォルトの名無しさん
08/04/17 07:37:42
2ch.netだけだと、
URLリンク(www.example.com)
がマッチしちゃうよ

717:デフォルトの名無しさん
08/04/17 07:41:25
じゃぁ
//[^/].*2ch.net/

718:デフォルトの名無しさん
08/04/17 16:16:02
itemが必ず入ってい<mark>~</mark>を検索する方法はありましか?
その場合itemがない<mark>~</mark>があり、これはヒットさせたくありません。

javaです。
正規表現は:<mark>.*?</mark>(?<!item.*?)

<mark> item </mark>  → うまくいく

<mark> item </mark> <mark> </mark> <mark> item </mark>  → うまくいかない
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑_↑↑↑↑↑↑↑↑↑
1個目のヒット_____________2個目のヒット

719:デフォルトの名無しさん
08/04/17 18:03:59
それがXMLデータなら明らかにミスアプローチだと思う。

720:デフォルトの名無しさん
08/04/17 19:42:27
>>718
そこに書かれている条件だけなら、
<mark>[^<]*item[^<]*</mark>
で上手くいくかもしれない。

<marK>とかのタグが入れ子するかもー、ということなら正規表現じゃムリ。



721:デフォルトの名無しさん
08/04/17 19:57:24
正規表現でファイルに文字が存在するかチェックしています。
存在していたら中の文字を返す仕様です。
/(<grep\s*([^\s]+)\s*-\s*([^\s]+)\s*>.+<\/grep>/
<grep foo-../hoge/google.txt>マッチします。</grep>
この場合、../hoge/google.txt内fooという文字があったらに「マッチします。」を返します。

この応用で質問なのですが、
<grep foo-../hoge/>aaa<grep foo-./foo/>aaaaa</grep>aa</grep>
という文のように入れ子の場合、
<grep foo-../hoge/>~</grep>と
<grep foo-./foo/>~</grep>で
2回チェックしたいのです。

この場合、最長マッチでできるのですが以下のような場合も考えられるのでどうすればいいか困っております。
<grep foo-../hoge/>aaaaa</grep>
<grep foo-./foo/>aaaaa</grep>

どんな書き方がいいでしょうか?
ご鞭撻のほどよろしくお願いします。

722:デフォルトの名無しさん
08/04/17 20:00:02
</grep>がどっちの</grep>を指してるのかわかりづらい
あとそういう入れ子構造は正規表現の苦手な分野だから、ほかの手が使えるならそっちのがいい

723:デフォルトの名無しさん
08/04/17 20:21:25
教えてください。
正規表現じゃないアスタリスクってなんていうんですか?
たとえばsyslog.logから始まるファイルを表示するとき

$ ls syslog.log*

こんな感じで見てるんだけど、このときの*はメタキャラクタ?
また、こういうときに正規表現を使ってみたい場合はどうすればいいですか?

724:デフォルトの名無しさん
08/04/17 20:42:30
わいるどかーど

725:デフォルトの名無しさん
08/04/17 21:04:26
ls | grep 正規表現

726:デフォルトの名無しさん
08/04/17 21:16:35
ありがとうございます。
なるほど、確かにシェルのワイルドカードですね。
納得しました。

727:721
08/04/17 22:14:46
>>722
ありがとうございます。
C言語やJAVAなんかの入れ子のifのような感じといえばわかりやすいかもしれません。
こういう処理はどうやればいいのでしょうか?
正規表現とは関係ないですがよろしくお願いします。

728:デフォルトの名無しさん
08/04/18 00:05:52
>>727
パーズして構文木を作って、構文木に対していろいろ処理をするのがふ
つう。
楽をしたいなら、その変な文法をやめてXMLにしてしまえ。DOMにしてか
らイロイロすればいい。


729:デフォルトの名無しさん
08/04/18 18:40:10
>>728
ありがとうございます。
正規表現でやりたいです。

テーブルタグの入れ子処理みたいなものは正規表現では難しいのですね。。。
<table>
 <tr>
  <td>
   <table>
    <tr>
     <td></td>
    </tr>
   </table>
  </td>
 </tr>
</table>

730:デフォルトの名無しさん
08/04/18 21:07:38
普通の正規表現では不特定回数の入れ子を扱えません。

731:デフォルトの名無しさん
08/04/19 11:38:21
正規表現を基礎から学習したいのですが、チュートリアル・サイドで
人妻がどうのとか、女子高生がどうしたとかが概説に載っていて嫌な気分になりました。

そこできちんとした書籍を購入しようと思いますがオススメはありますでしょうか?
ポケット・リファレンスあたりかな?

732:デフォルトの名無しさん
08/04/19 11:48:12
正規表現って学習するようなものか?
たしかに、正規表現を何か難しいもののように扱って、
「正規表現が分かる!」とか謳ってる本は巷に溢れてるけど、
役に立つと思ったのは一冊もないね。

処理系のリファレンスでも読んで試行錯誤するのが一番いいと思う。

733:デフォルトの名無しさん
08/04/19 11:59:21
さっそくご回答いただきありがとうございます。
なるほど、モヤモヤがすっきりしました。
とりあえずエディタのヘルプで生きていきます。


734:デフォルトの名無しさん
08/04/20 00:56:54
普段使いする1冊。
URLリンク(www.amazon.co.jp)
一応理論的な説明もなくはないけどメインはリファレンス。
簡単な例(任意の1文字にマッチさせるとか)から
進んだ内容(先読みとか)まで幅広くてグッド。

735:デフォルトの名無しさん
08/04/22 09:23:34
詳説正規表現第2版の何が不満なのか

736:デフォルトの名無しさん
08/04/22 09:30:00
もうすぐ3版が出るところだろ

737:デフォルトの名無しさん
08/04/22 16:29:32
今週

738:デフォルトの名無しさん
08/04/22 23:25:14
公式で買ったらもう届いたw

739:デフォルトの名無しさん
08/04/23 04:50:49
2版だってまだ読み終わってないよorz

740:デフォルトの名無しさん
08/04/23 08:33:46
>>738
マジかよwいいなー

741:デフォルトの名無しさん
08/04/23 23:54:46
>>738
書評頼むよ
2版からどう変わってた?

742:デフォルトの名無しさん
08/04/24 22:03:25
教えてください
地図のアドレスなのですが
URLリンク(abc.com)
これを下のように置換したいのですがどうやればよいのでしょうか?
x=とy=の値を取り出して
URLリンク(def.com)
のようにしたいのですがよろしくお願いします。

rubyを勉強中です。

743:デフォルトの名無しさん
08/04/25 07:01:17
URIはパーサ使えばいいやん

744:デフォルトの名無しさん
08/04/25 09:13:28
>>742
'&'(と'?')でsplit()してからの方が楽だったりするかな。


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