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

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

正則表達(dá)式以獲取Javascript中兩個(gè)字符串之間的字符串

正則表達(dá)式以獲取Javascript中兩個(gè)字符串之間的字符串

我發(fā)現(xiàn)了非常類似的帖子,但我在這里找不到我的正則表達(dá)式。我正在嘗試編寫一個(gè)正則表達(dá)式,它返回一個(gè)字符串,該字符串位于另外兩個(gè)字符串之間。例如:我想得到駐留在字符串“?!焙汀芭D獭敝g的字符串。我的??偸俏古D虝?huì)回來(lái)“總是給予”到目前為止,我拼湊起來(lái)的表達(dá)方式如下:(?=cow).*(?=milk)不過,這會(huì)返回“牛總是給”的字符串。正則表達(dá)式以獲取Javascript中兩個(gè)字符串之間的字符串
查看完整描述

3 回答

?
森欄

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

正則表達(dá)式以獲取Javascript中兩個(gè)字符串之間的字符串

在絕大多數(shù)情況下,最完整的解決方案是使用捕獲組帶著懶惰點(diǎn)匹配模式..然而,一個(gè)點(diǎn).在JS regex中,不匹配換行字符,所以,在100%情況下,[^][\s\S]/[\d\D]/[\w\W]構(gòu)造。

ECMAScript 2018和新的兼容解決方案

在JS環(huán)境中支持ECMAScript 2018s修飾符允許.匹配任何字符,包括換行字符,regex引擎支持可變長(zhǎng)度的查找。所以,您可以使用正則表達(dá)式,例如

var result = s.match(/(?<=cow\s+).*?(?=\s+milk)/gs); // Returns multiple matches if any// Orvar result = s.match(/(?<=cow\s*).
*?(?=\s*milk)/gs); // Same but whitespaces are optional

在這兩種情況下,都會(huì)檢查當(dāng)前的位置。cow之后的任何1/0或更多的空白空間cow,則任何0+字符盡可能少地被匹配和消耗(=添加到匹配值),然后milk被選中(在此子字符串之前使用任何1/0或更多的空格)。

場(chǎng)景1:?jiǎn)涡休斎?/trans>

所有JS環(huán)境都支持此方案和以下所有其他方案。參見答案底部的用法示例。

cow (.*?) milk

cow首先找到一個(gè)空格,然后找到除換行字符以外的任何0+字符,盡可能少使用*?是一個(gè)惰性量詞,被捕獲到組1中,然后用milk必須跟隨(并且它們是匹配的,并且消耗掉)。

場(chǎng)景2:多行輸入

cow ([\s\S]*?) milk

這里,cow首先匹配一個(gè)空格,然后將任意0+字符盡可能少地匹配并捕獲到第1組,然后使用milk是匹配的。

場(chǎng)景3:重疊匹配

如果你有一個(gè)字符串>>>15 text>>>67 text2>>>你需要兩場(chǎng)比賽>>>+number+whitespace>>>,你不能用/>>>\d+\s(.*?)>>>/g因?yàn)檫@將只找到一個(gè)匹配的事實(shí),因?yàn)?/trans>>>>以前67已經(jīng)消耗掉找到第一次匹配。您可以使用正前瞻檢查文本是否存在,而不實(shí)際“吞食”它(即附加到比賽中):

/>>>\d+\s(.*?)(?=>>>)/g

在線regex演示屈服text1text2作為第一組的內(nèi)容。

亦見如何獲得字符串的所有可能的重疊匹配.

業(yè)績(jī)考慮

懶惰點(diǎn)匹配模式(.*?)如果給出很長(zhǎng)的輸入,regex模式可能會(huì)減慢腳本的執(zhí)行速度。在很多情況下,展開環(huán)技術(shù)在很大程度上是有幫助的。試圖抓住兩者之間的一切cowmilk從…"Their\ncow\ngives\nmore\nmilk",我們看到,我們只需要匹配所有的行,而不是從milk因此,而不是cow\n([\s\S]*?)\nmilk我們可以使用:

/cow\n(.*(?:\n(?!milk$).*)*)\nmilk/gm

regex演示(如果可以的話)\r\n,使用/cow\r?\n(.*(?:\r?\n(?!milk$).*)*)\r?\nmilk/gm)。使用這個(gè)小測(cè)試字符串,性能增益是可以忽略不計(jì)的,但是對(duì)于非常大的文本,您會(huì)感覺到差異(特別是如果行長(zhǎng),換行不多)。

JavaScript中的示例regex用法:

//Single/First match expected: use no global modifier and access match[1]

console.log("My cow always gives milk".match(/cow (.*?) milk/)[1]);

// Multiple matches: get multiple matches with a global modifier and 

// trim the results if length of leading/trailing delimiters is known

var s = "My cow always gives milk, thier cow also gives milk";

console.log(s.match(/cow (.*?) milk/g).map(function(x) {return x.substr(4,x.length-9);}));

//or use RegExp#exec inside a loop to collect all the Group 1 contents

var result = [], m, rx = /cow (.*?) milk/g;

while ((m=rx.exec(s)) !== null) {

  result.push(m[1]);

}

console.log(result);


查看完整回答
反對(duì) 回復(fù) 2019-06-09
  • 3 回答
  • 0 關(guān)注
  • 1438 瀏覽
慕課專欄
更多

添加回答

舉報(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)