2013-11-28 40 views
0

這可能不是那麼容易,你認爲:)正則表達式來只有兩個字符

我想正好一個字符,2個字符之間不匹配的東西,只有這兩個之間獲取文本。第一個字符是!第二個是「]

例字符串:Hello 123 !get this text'] hello 1234

所以我只想抓住‘得到這個文本’,

例如這也只能趕上「得到這個文本」:

Hello 123 ! hello !get this text'] hello 1234 

而不是「你好得到這個文本!」

此正則表達式似乎只在第一個例子中的工作:(?<=!)[^}]*(?='])

感謝

回答

1

嘗試下面的表達式:

(?<=!)[^!]+?(?='\]) 
  • (?<=!):請看後面的感嘆號!
  • [^!]+?:匹配一個或多個不是驚歎號的字符,並且一次只能懶惰地執行一個字符,在每個字符匹配後檢查以下表達式以知道何時停止。
  • (?='\]):向前看看是否有字面',後面跟着字面]

這裏是Regex101 Demo在PHP中,但在這種情況下沒有什麼區別。

+0

謝謝!這很快 –

+0

@ user2969412不客氣,很高興我能幫上忙。 –

+0

@ user2969412查看[about]頁面,瞭解該問答網站的工作原理。 –

0

您還可以使用正則表達式簡單,與-split和-replace:

$t1 = "Hello 123 !get this text'] hello 1234" 
$t2 = "Hello 123 ! hello !get this text'] hello 1234" 

($t1,$t2) -split '!' -match "']" -replace "'].+",'' 

get this text 
get this text