2015-07-11 14 views
5

我正在使用Python,現在我想要一些東西來匹配,直到一個空格或字符串的結尾,所以我有正則表達式".*?[ $]"有什麼方法可以在正則表達式集中使用特殊字符嗎?

但是測試的是,看它不工作我看着documentation,發現特殊字符失去裏面套了特殊的意義了。

有沒有把這個意思放回集的方法嗎?

+1

Nope -'''特殊字符在集合內失去其特殊含義。 '''。回到繪圖板。 – wwii

+0

如果有一個字符串與一個字符 - 空格?如果一個字符串是空的呢? – sln

+0

@wwii謝謝,這正是我想知道的。 (雖然答案確實幫助我解決了我的問題。) –

回答

0

沒有,特別意思不能被放回到集合中,所以正則表達式必須被重寫。

我結束了使用以下正則表達式:.*?(?:\s|$)這是不同的答案的組合。

1

那是因爲你正則表達式是不正確,你的正則表達式匹配.*? +空格或字符$字面上。(請注意,除了]每一個正則表達式字符的字符類中會被轉義)

相反,你可以提前使用正面看:

.*(?= |$) 

觀看演示https://regex101.com/r/sF3qU1/1

1

您可以使用以下方法:

a = "testing for fun" 

    n = match('[^\s]+',a) 

>> testing 
+1

謝謝!這有幫助! –

2

我認爲,你的目的的話錨就足夠了。從re內部文件(運行pydoc re如果您使用的是類Unix系統):

\b  Matches the empty string, but only at the start or end of a word. 

所以,你的正則表達式將是這樣的:

".*?\\b" 

r".*?\b"