2014-09-13 115 views
-1

我有這個字符串:正則表達式:找到兩個詞之間的空間

邁阿密25趙令DOE 3059715648科勒爾蓋布爾斯

我想用正則表達式來查找以下空間:

邁阿密25 [SPACE] JOHN H. DOE 3059715648 [SPACE]科勒爾蓋布爾

我想忽略John H. Doe之間的所有其他空間

謝謝!

+2

找到一個空間,那麼你想要什麼用它做? – falsetru 2014-09-13 17:47:25

+1

澄清你找到這些空間的邏輯嗎? – anubhava 2014-09-13 17:47:56

+2

您需要一種方法從您不想要的空間中邏輯地區分您想要的空間。例如,規則,*只能找到數字*之後的空格嗎?它適用於您演示的單個示例,但從您的問題來看,您是不是很清楚這是否適合您要處理的所有字符串。 – lurker 2014-09-13 17:48:51

回答

1

你可以使用lookarounds在給定的字符串中做到這一點,但不確定這背後的邏輯。

(?<=\d)\s+(?=\D) 

此斷言在字符串中的當前位置,什麼是前面一個數字,接下來是任意字符不是那一個數字,如果成功的話空間字符(S)是匹配的。

+0

謝謝!像魅力一樣工作 – PizzaMonster 2014-09-13 18:25:37

+0

不客氣。 =) – hwnd 2014-09-13 18:25:56

+1

+1 - 將捐贈給偉大的水晶球,以確定用戶真正想要的東西。也許應該指出的是,在非Javascript正則表達式中,\ d也會匹配諸如「1」(aka ARABIC-INDIC DIGIT ONE)之類的東西。 – 2014-09-13 18:41:15

2

我想你想這樣的事情,

(?<=\d)\s+(?=[A-Z]) 

這一個數字之後匹配一個或多個空格,它必須跟一個大寫字母。

DEMO

+0

太棒了!這個正則表達式也起作用!謝謝! – PizzaMonster 2014-09-13 18:26:17

0
(.*?(\\d+)(\\s+)(.*)) 

的Java代碼示例:

Pattern p = Pattern.compile("(.*?(\\d+)(\\s+)(.*))"); 
Matcher m = p.matcher("Miami 25 JOHN H. DOE 3059715648 Coral Gables"); 
if(m.matches()) { 
    //m.group(2) = 25 
    //m.group(4) = JOHN H. DOE 3059715648 Coral Gables 
} 
相關問題