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

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

Regex匹配兩個字符串之間的所有字符。

Regex匹配兩個字符串之間的所有字符。

揚帆大魚 2019-06-10 16:20:12
Regex匹配兩個字符串之間的所有字符。例子:“這只是\n簡單的句子”。我想在“這是”和“句子”之間匹配每一個字符。應忽略換行符。我搞不懂正確的語法。
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

例如

(?<=This is)(.*)(?=sentence)

雷杰克斯

我用的是看臺(?<=)向前看(?=)所以“這是”和“句子”不包括在匹配中,但是這取決于您的用例,您也可以簡單地編寫This is(.*)sentence.

這里最重要的是激活regex引擎的“dotall”模式,這樣.正在匹配換行符。但是你是如何做到這一點的取決于你的正則表達式引擎。

下一件事是如果你用.*.*?..第一個是貪婪的,將匹配到你的字符串中的最后一個“句子”,第二個是懶惰的,將匹配到你的字符串中的下一個“句子”。

更新

雷杰克斯

This is(?s)(.*)sentence

其中,(?s)打開dotal修飾符,使.匹配換行符。

更新2:

(?<=is \()(.*?)(?=\s*\))

與你的例子“這是(一個簡單的)句子”相匹配??催@里雷杰克斯


查看完整回答
反對 回復 2019-06-10
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

懶惰量詞

重新提出這個問題,因為在我看來,公認答案中的準則似乎不太正確。為什么?因為

(?<=This is)(.*)(?=sentence)

將匹配my first sentence. This is my second在……里面This is my first sentence. This is my second sentence.

見演示.

你需要在兩個看臺之間設置一個懶惰的量詞。添加?讓星星變得懶惰。

這符合您的要求:

(?<=This is).*?(?=sentence)

見演示..我刪除了捕獲組,這是不需要的。

DOTALL模式以匹配跨線中斷

注意,在演示中,“點匹配換行模式”(a.k.a.)點-所有設置(見如何用各種語言打開DOTALL)。在許多regex風格中,您可以使用在線修飾符來設置它。(?s),把這句話變成:

(?s)(?<=This is).*?(?=sentence)

參照系


查看完整回答
反對 回復 2019-06-10
?
寶慕林4294392

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

試一試This is[\s\S]*sentence,在javascript中工作


查看完整回答
反對 回復 2019-06-10
  • 3 回答
  • 0 關注
  • 912 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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