正規表現 part4at TECH
正規表現 part4 - 暇つぶし2ch718:デフォルトの名無しさん
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