1
我正在尋找一個解決方案來找到一個正則表達式,它會給我所有在兩個字符k
和-
之間的所有內容。RegExp匹配兩個字符
例如:Get 12
從42k12-b
我試圖做一些自己的正則表達式,但沒有太大的成功,因爲我需要它來排除第一和最後一個字符。我試着用:
k(.*)\-
但它包括兩個字符。
我該如何做到這一點?
我正在尋找一個解決方案來找到一個正則表達式,它會給我所有在兩個字符k
和-
之間的所有內容。RegExp匹配兩個字符
例如:Get 12
從42k12-b
我試圖做一些自己的正則表達式,但沒有太大的成功,因爲我需要它來排除第一和最後一個字符。我試着用:
k(.*)\-
但它包括兩個字符。
我該如何做到這一點?
function createRegExp(str, startChar, endChar) {
let regExpText = startChar + '(.*)' + endChar;
let expression = new RegExp(regExpText, 'g');
return expression.exec(str)[1];
}
該函數將帶3個參數。一個字符串,搜索開始的字符和搜索結束的字符,這兩個字符都不包含在返回的結果中。
在它的表達捕獲組的當前格式(.*)
將是貪心,所以給定的字符串「abcdabcdabcd」和「a」和「d」字符,它將返回字符串「一個bcdabcdabc d的加粗部分'字符串,但使用惰性量詞(.*?)
並給出相同的字符,它將返回字符串'a bc dabcdabcd'的粗體部分。
.exec
函數返回一個包含2個元素的數組,其中第一個是表達式的完全匹配,它包含兩個提供的字符和之間的字符,而第二個數組元素只包含兩個提供的字符字符。
請謹慎動態地創建此RegExp,就像上面的示例中一樣,因爲某些字符需要在RegExp中轉義,否則它們將被視爲RegExp一般令牌。
你可以顯示你使用的代碼(不只是正則表達式模式)嗎? – CAustin
對於'k',你必須在匹配後去掉這個。對於'-',你可以使用預見在它匹配之前停下來。 –