1

私はこのような文字列を持っています

<div><span style="">toto</span> some character <span>toto2</span></div>

私の正規表現:

/(<span .*>)(.*)(<\/span>)/

私はpreg_matchを使用し、文字列全体を返します

<span style="">toto</span> some character <span>toto2</span>

私はそれを返したい:

<span style="">toto</span>
and
<span>toto2</span>

これを達成するために何をする必要がありますか?ありがとう。

4

2 に答える 2

6

これはどう:

/(<span[^>]*>)(.*?)(<\/span>)/

PHP preg_match Repetitionのドキュメントを確認してください。

デフォルトでは、量指定子は「貪欲」です。つまり、可能な限り一致します。

ただし、量指定子の後に疑問符が続く場合は遅延になり、代わりに可能な最小回数に一致します

于 2013-01-09T15:07:58.723 に答える
1

以前の答えはすべて正しいと思いますが、式全体(つまり from to )のみをキャプチャしたいので、正規表現内のすべてをキャプチャする必要はないので、追加したいだけです() 。次はキャプチャせずに期待することを行います追加の表現

/(<span\w*[^>]*>[^<]*<\/span>)/

( http://rubular.com/でテスト済み)

EDIT:もちろん、PHPとRubyの正規表現の実装にはいくつかの違いがあるかもしれませんが、考え方は同じです:)

于 2013-01-09T15:10:16.590 に答える