我不是一個正規表達專家,至少可以說。我正在尋找的是一個正則表達式,它從字符串中提取特定格式的多個值。正則表達式從字符串中提取多個格式化值
例字符串: 「客戶[記錄:客戶ID]從[記錄:CityID]的類型爲[記錄:TYPEID]」
我需要的是,讓我所有的值在此字符串是一個表達式格式爲「[record:XXXXX]」。因此,在這個例子中它會給我:
[ 「客戶ID」, 「CityID」, 「TYPEID」]
能不能做到?
我不是一個正規表達專家,至少可以說。我正在尋找的是一個正則表達式,它從字符串中提取特定格式的多個值。正則表達式從字符串中提取多個格式化值
例字符串: 「客戶[記錄:客戶ID]從[記錄:CityID]的類型爲[記錄:TYPEID]」
我需要的是,讓我所有的值在此字符串是一個表達式格式爲「[record:XXXXX]」。因此,在這個例子中它會給我:
[ 「客戶ID」, 「CityID」, 「TYPEID」]
能不能做到?
在Javascript中:
var pattern = '\\[record:([a-zA-Z0-9]+)\\]';
var records = new RegExp(pattern, 'g');
var extract = new RegExp(pattern);
var string = "Customer [record:CustomerID] from [record:CityID] is of type [record:TypeID]"
var matches = string.match(records);
console.log(matches);
> [ '[record:CustomerID]',
'[record:CityID]',
'[record:TypeID]' ]
var records = [];
for (var i=0; i<matches.length; i++) {
var match = matches[i].match(extract);
records.push(match[1]);
}
console.log(records)
> [ 'CustomerID',
'CityID',
'TypeID' ]
可能不是最簡潔的解決方案,但乾淨,(希望)理解。
\
在他們面前被轉義()
,形成了一個正則表達式組/子模式[a-zA-Z0-9]+
裝置「匹配一串字母(大寫或小寫)或數字」,+
指定「長度爲一個或多個」。 A *
這裏的意思是「長度爲0或更長」。這裏我使用了兩個基於相同模式的正則表達式。它們使用不同的選項進行編譯:g
標誌告訴正則表達式查找字符串中的所有匹配項。有了這個標誌,我們就不會得到與結果匹配的組,只是匹配的整個字符串。第二個正則表達式編譯時沒有g
標誌,所以我們可以使用它來提取匹配的組。
其實,像sed
可以做的伎倆,即:
echo "Customer ..." | sed -e 's/\][^[]*\[record:/","/'g -e 's/^.*record:/["/' -e 's/].*$/"]/
是否使用了特定的語言?你可以用正則表達式來做你想做的事情,但這取決於你使用的結構和語言。 – npinti
我正在尋找一個解決方案在JavaScript中。 –