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

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

正則表達式匹配@和空格之間的字符

正則表達式匹配@和空格之間的字符

明月笑刀無情 2019-02-20 05:01:06
舉個例子:AAA@XXX YYYY匹配到@和空格之間的字符XXX,請問正則怎么來寫?
查看完整描述

6 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

if(preg_match_all(
    '%@(\w+)%u', 
    '@張全蛋 含淚質檢@三星Note7 被炸飛,聽說@炸機 跟@啤酒 更配哦!', 
    $arr
)) {
    var_export($arr);
}
//輸出
array (
  0 => 
  array (
    0 => '@張全蛋',
    1 => '@三星Note7',
    2 => '@炸機',
    3 => '@啤酒',
  ),
  1 => 
  array (
    0 => '張全蛋',
    1 => '三星Note7',
    2 => '炸機',
    3 => '啤酒',
  ),
)

正則表達式 %@(\w+)%u 中:
%是分隔符.
u是修飾符,表示unicode.
\w是元字符,在ASCII下等價于[A-Za-z0-9_],在unicode下表示字符(包括中文)和數字和下劃線.
+是量詞,表示1個或多個,等價于{1,}的寫法.
()表示子模式,體現在匹配結果中的$arr[1]里.
區別于主模式,體現在匹配結果中的$arr[0]里.

另外,也可以試試下面這個正則表達式:

%@(\S+)\s%
其中:
\s   匹配空白字符,包括:空格,制表符(\t,\v),回車(\r),換行(\n),換頁(\f),等價于[ \t\r\n\v\f]
\S   匹配除空白字符外的任意字符,等價于[^ \t\r\n\v\f]

另外:

preg_match:     返回模式的匹配次數,0次(不匹配)或1次,因為preg_match在第1次匹配后會停止搜索.
preg_match_all: 返回完整匹配次數,如果發生錯誤返回FALSE.

也就是說,如果上面的例子使用preg_match,那只能匹配到字符串中的"張全蛋".

查看完整回答
反對 回復 2019-03-01
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

@(.+)\s

查看完整回答
反對 回復 2019-03-01
  • 6 回答
  • 0 關注
  • 3485 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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