簡體   English   中英

正則表達式同時向前和向后

[英]Regex simultaneous lookahead and lookbehind

我正在嘗試編寫一個正則表達式,同時匹配當前角色前面和后面的圖案。

例如:

紅色,格力,黃白色,多雪

312415 red, gree, yellow-white, snowy CDEFASE

一二三四

29321093123 one, two, three #four IRUASJDJADALLDLA

如您所見,在字符串中間部分的前面和后面,我有相同的模式:

:\\ d +

返回 :[AZ] +

我該怎么做?

使用以下正則表達式從組索引1中獲取所需的字符串。

\d+\s+(.*?)\s+[A-Z]+

演示

您不能同時向后看和向前看,但可以像平常一樣使用它們。

從后向開始,先檢查字符串,后跟一個空格(?<=\\d+ )匹配中間的任何字符.+然后以與一個空格匹配后跟一個或多個字母(?= [AZ]+)

放在一起,你就得到了(?<=\\d+ ).+(?= [AZ]+)

先行者和后備者並不是您認為的那樣。 它們是零寬度的斷言,這意味着它們不匹配任何內容,僅檢查模式的存在/不存在。

您要在此處匹配多個數字,后跟一系列字符,然后再跟隨另一組大寫字符。 您如何捕獲中間的東西? 您可以使用方括號。 他們會在進行比賽時捕獲比賽並將其保存,以備日后參考。 AVinash答案中的(。*?)部分實際上是捕獲所需文本的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM