簡體   English   中英

使用區分大小寫字符的正則表達式拆分字符串上的名稱

[英]Split names on a string with Regex with case sensitive characters

我想用這些字符串將名稱拆分為數組。

Bol BolLouis King
Brandon ClarkeRui Hachimura
Michael Jeffery JordanDennis Rodman

['Bol Bol', 'Louis King']
['Brandon Clarke', 'Rui Hachimura']
['Michael Jeffery Jordan', 'Dennis Rodman']

我已經使用^[AZ]\\w+\\s[AZ][az]+重新創建了我自己的正則表達式,但這僅匹配第一個名稱,我無法捕獲第二個或第三個名稱。 當名字有 3 個詞時,我也遇到了一些問題,比如Michael Jeffery Jordan

我建議使用積極的前瞻來概括您的模式。 這允許您匹配緊跟其他一些表達式的表達式。 在模式末尾使用 (?=someRegexp) 使結尾成為小寫字符后緊跟大寫字符的情況。 然后,您可以概括為任意數量的單詞。

我還建議將其分為兩種情況,因為表達式中的姓氏后面不會跟大寫字母,而是跟在字符串結尾。 您可以使用 or 來做到這一點:(someRegexp|someOtherRegexp)

你沒有說你想要這個,所以這里有一個 sed 版本,它適用於你的示例輸入:

sed -e "s/\\(.*[az]\\)\\([AZ].*\\)/['\\1', '\\2']/g"

由於並非所有瀏覽器都支持后視,這里有一個沒有以下解決方案:

 var test = [ 'Bol BolLouis King', 'Brandon ClarkeRui Hachimura', 'Michael Jeffery JordanDennis Rodman', ]; console.log(test.map(function (a) { // return a + ' :' + a.match(/\\b[az]{1,2}\\K\\s/); return a.match(/^(.+?[az])([AZ].+)/); }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM