我想編寫正則表達式模式,它也應該匹配中間的字符串。在正則表達式之間如何匹配單詞?
例如:
我有這樣
^((?!mystring).)*$
這意味着匹配詞語,其不列入包含了mystring writtenthe正則表達式模式。但我想要正則表達式來匹配這樣的。
mystringabcdfrevrgf
正則表達式匹配應該返回
abcdfrevrgf
我將如何做到這一點,請幫助在此先感謝。
答:
((?!mystring)(.*))$
我想編寫正則表達式模式,它也應該匹配中間的字符串。在正則表達式之間如何匹配單詞?
例如:
我有這樣
^((?!mystring).)*$
這意味着匹配詞語,其不列入包含了mystring writtenthe正則表達式模式。但我想要正則表達式來匹配這樣的。
mystringabcdfrevrgf
正則表達式匹配應該返回
abcdfrevrgf
我將如何做到這一點,請幫助在此先感謝。
答:
((?!mystring)(.*))$
那豈不是更容易去除從你匹配字符串mystring
?
如在(Python的例子):
>>> re.sub("mystring", "", "mystringabcdfrevrgf")
'abcdfrevrgf'
這當然纔有意義,如果mystring
事實上是一個正則表達式,像
>>> re.sub("my.*?g", "", "xyzmystringabcdfrevrgf")
'xyzabcdfrevrgf'
否則,純字符串操作函數會更快,當然。
這聽起來像你想的:
var str = 'mystringabcdfrevrgf';
var regex = /^mystring(.*)$/;
var result = str.match(regex)[1];
//result contains 'abcdfrevrgf'
通過正則表達式引擎返回的每場比賽是一個連續的字符串。 給定文本XYZ和XZ的目標,引擎可以將X和Z作爲2個匹配返回,然後將它們連接到用戶,它可以匹配Y並使用空字符串進行替換。它不能直接匹配XZ,因爲它不是一個連續的字符串。如果您查看正則表達式引擎的內部實現,您會看到每個匹配通常使用一對整數(matchStartIndex,matchEndIndex或matchStartIndex,matchLength)進行定義,從而無法在中間忽略字符。
我認爲你需要一個正則表達式替換然後不匹配。請參閱@ Tim的答案。他覆蓋了所有的基地。 – FailedDev
您的「答案」 - ((?!mystring)(。*))$' - 匹配'ystringabcdfrevrgf',而不匹配'abcdfrevrgf'。除非你使用.NET並且選擇了RightToLeft選項,那就是。無論如何,你使用什麼味道?請相應地標記問題。 –