2017-02-02 104 views
0

這可能已經被問到,但我似乎無法找到任何重複,所以我會問自己,希望我不會被標記。蟒蛇2.7正則表達式搜索在'^'開始在pos

我正在構建一個使用狀態機的小型分析器,只要檢測到{,就會切換到子分析器。我只想要第一次出現我的正則表達式在我目前所處位置上的匹配。基本上我的正則表達式是keymatch = re.compile(r'^\{([A-Za-z0-9])\}'),我使用字符串this {is} a {test} string

問題是我在運行時遇到了不匹配keymatch.match(myString, pos)我也嘗試過使用keymatch.search(myString, pos),並且找到了相同的結果。

爲了記錄,pos指向正確的位置,硬編碼的值也不返回任何位置,但在我的正則表達式中沒有任何位置或前導返回所有匹配,這是我不想要的,因爲我正在重建字符串逐字符。另外,如果在pos找不到匹配項,我希望我的匹配對象是none來觸發一個錯誤,而不是僅僅給它發現的任何字符串。

我的方法有什麼明顯的錯誤,如果是的話,我能做些什麼來解決它?

回答

1

^指示字符串的開始。所以它只搜索第一個字符是一個開放的括號。你可以刪除^

+0

剛剛更新我的帖子,因爲我意識到我沒有正確解釋。我只想在pos的第一次出現。搜索時,pos指向'{',有沒有一種方法可以搜索並返回一個匹配項,如果它存在於pos的開始位置,而一個「none」則會觸發一個錯誤? – Turk

+1

我拿回來,因爲我是個傻瓜,刪除'^'並使用'.match'完全正是我需要的。我並不擅長正則表達式和蟒蛇模塊增加了足夠的奇怪性讓我無法跟蹤。你是對的,謝謝! – Turk