第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

preg_match_all 僅返回每隔一個匹配項

preg_match_all 僅返回每隔一個匹配項

PHP
慕虎7371278 2024-01-19 10:03:50
我有這樣的程序:$txt = "{ABC}+ 1- 1{DEF}+ 2- 2{IJK}+ 3- 3{LMN}+ 4 - 4";preg_match_all('/\{.*?\{/s', $txt, $matches);var_dump($matches);我想匹配兩個左大括號(或文本結(jié)尾)之間的所有內(nèi)容。但我的結(jié)果只包含 ABC 和 IJK 塊,因為下一個 { 已經(jīng)被吃掉了。array(1) {  [0]=>  array(2) {    [0]=>    string(16) "{ABC}+ 1- 1{"    [1]=>    string(16) "{IJK}+ 3- 3{"  }}
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

使用正則表達式先行運算?(?=)符將允許您匹配 a 之前的任何內(nèi)容,{而無需實際匹配{字符本身。

preg_match_all('/\{.*?(?=\{)/s',?$txt,?$matches)

會給你這個結(jié)果:

array(1) {

? [0]=>

? array(3) {

? ? [0]=>

? ? string(15) "{ABC}

+ 1

- 1


"

? ? [1]=>

? ? string(15) "{DEF}

+ 2

- 2


"

? ? [2]=>

? ? string(15) "{IJK}

+ 3

- 3


"

? }

}

您提到您還想匹配 a{和文本末尾之間的內(nèi)容。您可以通過在前瞻內(nèi)使用管道運算符和字符串?錨點|末尾來實現(xiàn)此目的。?$

preg_match_all('/\{.*?(?=\{|$)/s',?$txt,?$matches)

會給你你想要的結(jié)果:

array(1) {

? [0]=>

? array(4) {

? ? [0]=>

? ? string(15) "{ABC}

+ 1

- 1


"

? ? [1]=>

? ? string(15) "{DEF}

+ 2

- 2


"

? ? [2]=>

? ? string(15) "{IJK}

+ 3

- 3


"

? ? [3]=>

? ? string(14) "{LMN}

+ 4?

- 4"

? }

}


查看完整回答
反對 回復 2024-01-19
?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

我建議使用否定字符類?[^,它將匹配除左括號之外的任何字符。

這樣,它將從開頭匹配{到字符串的下一次出現(xiàn){或結(jié)尾。

{[^{]*

正則表達式演示|?


查看完整回答
反對 回復 2024-01-19
  • 2 回答
  • 0 關(guān)注
  • 202 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號