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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

正則表達(dá)式僅過(guò)濾無(wú)空格字符串

正則表達(dá)式僅過(guò)濾無(wú)空格字符串

PHP
POPMUISE 2022-12-11 09:18:55
我目前有以下正則表達(dá)式:(?<=\[)([^\]]+)結(jié)果如下:text* your-nameemail* your-emailtext your-subjecttextarea your-messagesubmit "Submit"your-subjectyour-nameyour-emailyour-message我想調(diào)整我的正則表達(dá)式,以便它過(guò)濾掉中間有空格的結(jié)果,這樣我只剩下以下結(jié)果:your-subjectyour-nameyour-emailyour-message我怎樣才能做到這一點(diǎn)?目前是這樣的:https://regex101.com/r/yP3iB0/58
查看完整描述

3 回答

?
明月笑刀無(wú)情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

你可以使用

(?<=\[)[^]\s]+(?=])

請(qǐng)參閱正則表達(dá)式PHP 演示。請(qǐng)注意,該$matches結(jié)構(gòu)在模式中沒(méi)有捕獲組時(shí)更清晰,所有上下文都使用非消耗性環(huán)視檢查。

細(xì)節(jié)

  • (?<=\[)[- 需要立即在當(dāng)前位置左側(cè)的正向后視

  • [^]\s]+ - 除了](不需要轉(zhuǎn)義它,因?yàn)樗欠穸ㄗ址愔械牡谝粋€(gè)字符)和空格之外的1+ 個(gè)字符

  • (?=])]- 需要緊靠當(dāng)前位置右側(cè)的正向前瞻(]在字符類之外并不特殊)。

PHP 演示

$arr = ['[text* your-name]','[email* your-email]','[text your-subject]','[textarea your-message]','[submit "Verzenden"]','[your-subject]','[your-name]','[your-email]','[your-message]'];


foreach ($arr as $s) {

  if (preg_match_all('~(?<=\[)[^]\s]+(?=])~', $s, $matches)) {

    print_r($matches[0]);

  }

}

輸出:


Array

(

    [0] => your-subject

)

Array

(

    [0] => your-name

)

Array

(

    [0] => your-email

)

Array

(

    [0] => your-message

)


查看完整回答
反對(duì) 回復(fù) 2022-12-11
?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

從您當(dāng)前的模式開(kāi)始,您所要做的就是從字符類中排除空格或所有空白字符,并檢查后面是否有右方括號(hào)。所以(?<=\[)([^]\s]+)(?=])在整個(gè)比賽或捕獲組中的結(jié)果(這使它無(wú)用)。

但是你可以寫一個(gè)更好的模式,更簡(jiǎn)單,更高效:\[([^]\s]+)]演示

更簡(jiǎn)單,因?yàn)橛幸粋€(gè)捕獲組,你不必使用環(huán)視來(lái)提取你想要的沒(méi)有括號(hào)的內(nèi)容。它也更短,更容易理解。

由于兩個(gè)啟動(dòng)優(yōu)化,效率更高:

  • 第一個(gè)也是最重要的:當(dāng)模式以文字字符串(此處為左括號(hào))開(kāi)頭時(shí),快速算法會(huì)在字符串中搜索該文字字符串在主題字符串中出現(xiàn)的所有位置,并且只會(huì)在這些位置測(cè)試該模式. 否則,如果您將此括號(hào)括在后視中就是這種情況,則此啟動(dòng)優(yōu)化是不可能的,并且將在主題字符串中的每個(gè)位置測(cè)試該模式。

  • 第二種叫做自動(dòng)占有。當(dāng)最終回溯不會(huì)改變結(jié)果時(shí),它會(huì)在編譯時(shí)自動(dòng)使量詞占有所有格。比如,停留的時(shí)候a*b變成。在我們的例子中,由于字符類不包括右括號(hào),因此變?yōu)? 具體而言,當(dāng)找到空格而不是右括號(hào)時(shí),貪婪量詞不會(huì)返回字符來(lái)嘗試其他可能性,模式失敗,正則表達(dá)式引擎會(huì)在下一個(gè)位置嘗試模式。再一次,將括號(hào)放在前瞻中會(huì)禁用此優(yōu)化。a*+ba.*ba.*b[^]\s][^]\s]+][^]\s]++]

但是為什么環(huán)視會(huì)禁用這些優(yōu)化呢?原因很簡(jiǎn)單,這些優(yōu)化需要研究模式,所以為了讓這些分析保持快速,它們僅限于簡(jiǎn)單的情況。(請(qǐng)注意,捕獲組不會(huì)干擾自動(dòng)占有。)


如果你絕對(duì)想避免捕獲組但又想保留這兩個(gè)優(yōu)化,那么沒(méi)有什么可以禁止寫的:

\[\K[^]\s]++(?=]) 演示

或更有趣:

\[(?=[^]\s]++\K]) 演示

這兩個(gè)模式以文字開(kāi)頭[,所有格量詞是手動(dòng)添加的。


查看完整回答
反對(duì) 回復(fù) 2022-12-11
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

/^\[\K([^ \]]+)(?=\])/gm

在https://regex101.com/r/yP3iB0/62測(cè)試這個(gè)正則表達(dá)式模式


查看完整回答
反對(duì) 回復(fù) 2022-12-11
  • 3 回答
  • 0 關(guān)注
  • 162 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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