2011-11-16 130 views
2

我想編寫正則表達式模式,它也應該匹配中間的字符串。在正則表達式之間如何匹配單詞?

例如:

我有這樣

^((?!mystring).)*$ 

這意味着匹配詞語,其不列入包含了mystring writtenthe正則表達式模式。但我想要正則表達式來匹配這樣的。

mystringabcdfrevrgf 

正則表達式匹配應該返回

abcdfrevrgf 

我將如何做到這一點,請幫助在此先感謝。

答:

((?!mystring)(.*))$ 
+0

我認爲你需要一個正則表達式替換然後不匹配。請參閱@ Tim的答案。他覆蓋了所有的基地。 – FailedDev

+1

您的「答案」 - ((?!mystring)(。*))$' - 匹配'ystringabcdfrevrgf',而不匹配'abcdfrevrgf'。除非你使用.NET並且選擇了RightToLeft選項,那就是。無論如何,你使用什麼味道?請相應地標記問題。 –

回答

4

那豈不是更容易去除從你匹配字符串mystring

如在(Python的例子):

>>> re.sub("mystring", "", "mystringabcdfrevrgf") 
'abcdfrevrgf' 

這當然纔有意義,如果mystring事實上是一個正則表達式,像

>>> re.sub("my.*?g", "", "xyzmystringabcdfrevrgf") 
'xyzabcdfrevrgf' 

否則,純字符串操作函數會更快,當然。

0

這聽起來像你想的:

var str = 'mystringabcdfrevrgf'; 
var regex = /^mystring(.*)$/; 

var result = str.match(regex)[1]; 
//result contains 'abcdfrevrgf' 
1

通過正則表達式引擎返回的每場比賽是一個連續的字符串。 給定文本XYZ和XZ的目標,引擎可以將X和Z作爲2個匹配返回,然後將它們連接到用戶,它可以匹配Y並使用空字符串進行替換。它不能直接匹配XZ,因爲它不是一個連續的字符串。如果您查看正則表達式引擎的內部實現,您會看到每個匹配通常使用一對整數(matchStartIndex,matchEndIndex或matchStartIndex,matchLength)進行定義,從而無法在中間忽略字符。

相關問題