2012-12-27 26 views
5

私の会社はモバイルサイト用に第三者を使用しており、コードとコントロールの一部をアップデートするためのコンソールを用意しています。その1つは、サイトのコードを更新できる検索と置換機能です。唯一のこれは、それは複雑な正規表現のコードをたくさん使用し、私は複雑なものの良いチュートリアルを見つけることができないようです。だからここスティック段落タグをつかみ、リンクにそれを置く彼が私を与えた例が置き換え変数を使用してRegexを検索して置き換えます

を検索

(#d6d6d4.+?>.+?<p><a.+?>.+?)</a>(.+?)</td> 

は何

$1$2</a></td> 

ものと置き換えで$ 1と$ 2は?私はおそらく+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +しかし、私はどちらが不確かです。もし誰かが私を助けてください知っている。私は、次の正規表現の変数

(#d6d6d4.+?**[1]**>.+?**[2]**<p><a.+?**[3]**>.+?**[4]**)</a>(.+?**[5]**)</td> 

答えて

14

$ 1と$ 2は、正規表現のキャプチャグループのテキストを表します。キャプチャグループはカッコ内にあるものです。 <td color=#d6d6d4 foo=bar>Hello, world<p><a href=http://foo.com>foo link</a>some more text</td>

$ 1試合:#d6d6d4 foo=bar>Hello, world<p><a href=http://foo.com>foo link $ 2件一致:あなたはこの文字列を持っている場合

(  // start first capture group 
#d6d6d4 // match #d6d6d4 
.+?>  // any character, non-greedy, up to '>' 
.+?<p> // any character, non-greedy, up to <p> 
<a.+?> // an <a..> tag, consuming everything up to '>' 
.+?  // all characters from <a> to </a> 
)  // close the first capture group before the '</a>' 
</a>  // literal '</a>' 
(  // start second capture group 
.+?  // match all, non-greedy up to '</td>' 
)  // close capture group before '</td>' 
</td> // literal '</td>' 

は、だから、基本的には意味どの <td color=#d6d6d4 foo=bar>Hello, world<p><a href=http://foo.com>foo linksome more text</a></td>

some more text

ように文字列をに変換されます</a>タグは、some more text(またはの直前)に移動されます。あなたが好むなら、

+2

これは巨大な助けになりました、ありがとうございました。ありがとうございました! – user1566783

1
私はそれはインタラクティブだとあなたは別のテキストに対して異なるパターンをしようとして保つことができるので、正規表現のための偉大なトレーニングツールであることが http://rubular.com/を考える

し、結果を表示するには、下の下の数字でコードを追加しましたすぐに。

正規表現の基本的なガイドであるhttp://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html#UJへのリンクが含まれています。

http://regexlib.com

で3,500+正規表現ライブラリのも、サイトがあるとき闘争は$変数「が作られて試合の格納に使用されている独自のものを書くためになぜhttp://www.regular-expressions.info/

もあります: - のための$ 1最初の試合。 $ 2は2番目に等しくなります。

+0

私は最後に$ 2がそこに住んでいるのを見ますが、$ 1は情報を得ています – user1566783

+0

これらのサイトのおかげで、私はテストのためのreggyアプリが好きです。 http://reggyapp.com/ – DogCoffee

4

$ 1と$ 2変数がキャプチャされます(括弧内)。$ 1は最初の括弧グループで、$ 2は秒です。

+0

さて、$ 2は終了タグ間の最後のタグを取得していますが、タグを開いた直後には$ 1を取得していますか? – user1566783

+0

それは正しいです。 – Barmar

+0

しかし、私はそれがなぜ段落タグの前にあるのだろうかと思って以来、混乱していると思いますか? – user1566783

関連する問題