亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

php“preg_match”中字符串的組正則表達式模式匹配

php“preg_match”中字符串的組正則表達式模式匹配

PHP
慕村9548890 2022-10-14 10:24:01
我有一個字符串(A) fdkf djkf gsdfjkg hsfl (B) jfg dkfjg hdksfjg dkfj (c) ndfkj gndfg ndfn (d) kdjfskdj fs;s dknls期望的輸出應該是這樣的4 group matched(A) fdkf djkf gsdfjkg hsfl(B) jfg dkfjg hdksfjg dkfj(c) ndfkj gndfg ndfn(d) kdjfskdj fs;s dknls請幫忙我正在嘗試/((.+?) (?=\())/正則表達式,但它沒有創建 4 個組我在這里嘗試創建這種模式 https://regex101.com/r/KxAcaV/1$re = '/((.+?) (?=\())/';$str = '(A) fdkf djkf gsdfjkg hsfl (B) jfg dkfjg hdksfjg dkfj (c) ndfkj gndfg ndfn  (d) kdjfskdj fs;s dknls';preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);// Print the entire match resultvar_dump($matches);
查看完整描述

3 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

使用preg_match_all


$str = '(A) fdkf djkf gsdfjkg hsfl (B) jfg dkfjg hdksfjg dkfj (c) ndfkj gndfg ndfn (d) kdjfskdj fs;s dknls';


preg_match_all('/\(.+?\).+?(?= \(|$)/', $str, $m);

print_r($m[0]);

輸出:


Array

(

    [0] => (A) fdkf djkf gsdfjkg hsfl

    [1] => (B) jfg dkfjg hdksfjg dkfj

    [2] => (c) ndfkj gndfg ndfn

    [3] => (d) kdjfskdj fs;s dknls

)


查看完整回答
反對 回復 2022-10-14
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

如果您的字符串始終有 4 個組,那么您可以使用與括號中的符號匹配的模式,后跟一些重復 4 次的文本:

^(\(.\).+?)\s+(\(.\).+?)\s+(\(.\).+?)\s+(\(.\).+?)$

但是,如果您的字符串具有可變數量的組,那么您無法將它們全部放在不同的匹配組中,您需要使用以下方式獲取它們preg_match_all

(\(.\)[^(]+)

演示在這里。


查看完整回答
反對 回復 2022-10-14
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

用正則表達式分割你的字符串是最簡單的

(?i) +(?=\([a-z]\))

它匹配一個或多個空格,后跟一個左括號,后跟一個字母,后跟一個右括號,(?=\([a-z]\))是一個積極的前瞻。

演示


查看完整回答
反對 回復 2022-10-14
  • 3 回答
  • 0 關注
  • 151 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號