2016-05-12 33 views
0

後文我有這個字符串:正則表達式得到前和連字符

"Common Waxbill - Estrilda astrild" 

我怎麼能寫的話2個獨立的正則表達式之前和連字符後?我想輸出是:

"Common Waxbill" 

"Estrilda astrild" 
+1

爲什麼不把字符串拆分爲分隔符?不需要正則表達式。 –

+0

你想完成什麼? –

回答

2

如果您不能使用查找屁股,但你的弦總是在相同的格式和cannout包含超過一個連字符,你可以使用

^[^-]*[^ -]對於第二個中的第一個和\w[^-]*$(或[^ -][^-]*$如果連字符後的第一個非空間不一定是字字符

的解釋一點點: ^[^-]*[^ -]匹配的字符串的開始(錨^),隨後的字符中的任意量,即是不是連字符,也不是連字符或空格的字符(僅用於e包括比賽中的最後一個空間)。

[^ -][^-]*$採用相同的方法,但反過來,第一匹配的字符那既不空間也不連字符,隨後的字符中的任意量,即沒有連字符和最後的字符串(錨$)的端部。 \w[^-]*$基本相同,它使用更嚴格的\w而不是[^ -]。這再次用於排除匹配連字符後的空格。

+0

這適用於我。據我自己的知識,你能解釋[^ - ] [^ - ]是如何工作的嗎? –

+1

好奇它是如何工作的,因爲第一個中有一個(輕微)錯誤。添加了一些解釋。 –

4

這很簡單:

.*(?= -)  # matches everything before " - " 
(?<= -).* # matches everything after " - " 

查看lookaround assertions本教程。

+0

當我得到這個錯誤後,我使用代碼來匹配所有東西:SyntaxError:無效的正則表達式:/(?<= - )。* /:無效的組。我使用的是Chrome擴展程序Web Scraper,它使用js作爲其正則表達式。 –

+3

Javascript沒有向後看。 –