排除模式應該有一個逗號分隔的文本,其中每一個章節都有與否的字符串 - 像如何匹配令牌與表達文本/無JavaScript中的正則表達式
一個令牌列表 - 逗號分隔var tokens=['Inc.','Ltd','LLC'];
因此字符串是像
var companies="Apple, Inc., Microsoft, Inc., Buzzfeed, Treasure, LLC";
欲獲得該陣列作爲輸出
var companiesList = [
"Apple Inc.",
"Microsoft Inc.",
"Buzzfeed",
"Treasure LLC"
];
所以,我首先做了一個RegExp
像
var regex=new RegExp("([a-zA-Z&/? ]*),\\s+("+token+")", "gi")
我得到的比賽和搜索正則表達式像
var regex=new RegExp("([a-zA-Z&/? ]*),\\s+("+item+")", "i")
每個令牌:
tokens.forEach((item) => {
var regex = new RegExp("([a-zA-Z&/? ]*),\\s+(" + item + ")", "gi")
var matches = companies.match(regex) || []
console.log(item, regex.toString(), matches)
matches.forEach((m) => {
var regex = new RegExp("([a-zA-Z&/? ]*),\\s+(" + item + ")", "i")
var match = m.match(regex)
if (match && match.length > 2) {
var n = match[1].trim();
var c = match[2].trim();
companiesList.push(n + ' ' + c);
}
});
});
這樣我可以捕獲令牌和concat匹配組1和2.
var tokens = ['inc.', 'ltd', 'llc'],
companies = "Apple, Inc., Microsoft, Inc., Buzzfeed, Treasure, LLC",
companiesList = [];
tokens.forEach((item) => {
var regex = new RegExp("([a-zA-Z&/? ]*),\\s+(" + item + ")", "gi")
var matches = companies.match(regex) || []
console.log(item, regex.toString(), matches)
matches.forEach((m) => {
var regex = new RegExp("([a-zA-Z&/? ]*),\\s+(" + item + ")", "i")
var match = m.match(regex)
if (match && match.length > 2) {
var n = match[1].trim();
var c = match[2].trim();
companiesList.push(n + ' ' + c);
}
});
});
console.log(companiesList)
的問題是,我的思念像逗號分隔後沒有文字令牌逗號:Buzzfeed
。
的想法是負的外觀使用非捕獲組提前(見here關於正則表達式匹配非捕獲組)
/([a-zA-Z]*)^(?:(?!ltd).)+$/gi
但這種方式我在輸入字符串的時候有任何比賽標記存在:
"Apple, Inc., Microsoft, Inc., Buzzfeed, Treasure LLC".match(/([a-zA-Z]*)^(?:(?!llc).)+$/gi)
,而我只想沒有它,所以我想獲得匹配文本 - 就像之前相反:
["Buzzfeed"]
那麼如何否定/修改前面的代碼在這兩種情況下工作以獲得最終的組成陣列:
var companiesList = [
"Apple Inc.",
"Microsoft Inc.",
"Buzzfeed",
"Treasure LLC"
];
你誤會答案在流行SO問題有關配套不包含單詞的字符串。您需要'(?!ltd | etc)'前瞻性的地方,您可以在管道之後添加替代品。 –
@WiktorStribiżewuhm這是可能的,但檢查代碼,並嘗試一下,我有一些模式要尊重像'Name,Inc.'。所以我必須匹配這種模式和後者(沒有)。 – loretoparisi
要匹配Buzzfeed,您需要排除匹配那些'LLC'等,以及所有跟隨它們的單詞。 [這](https://jsfiddle.net/wav6gaob/)不好看。也許adaneo提出了一個更好的出路。 –