簡體   English   中英

如何使用正則表達式將字符串與python中的數字匹配?

[英]How do I match a string up to a number in python using regular expressions?

我是正則表達式的新手,但是我希望匹配一個字符串,直到數字開始。

所以說我有:

EEEE1234

那我想只提取:

EEEE

我試過搜索,但我發現正則表達式令人困惑,我認為最好的方法是通過例子。 有什么想法嗎? 此外,任何有關任何正則表達式代碼生成器或良好的教程的見解?

使用\\ D表示“不是數字”:

r"^\D+"

例:

import re

s = "EEEE1234"
print re.match(r"^\D+",s).group(0)

看到它在線工作: ideone

你已經有了一些關於教程的建議,但是我還想補充一點,如果你還沒有看過re模塊文檔 ,你應該在閱讀更基本的教程之后將其加入書簽並閱讀。 該文檔不是初學者級別,但它有一些非常有用的技巧,這些技巧特定於在Python中使用正則表達式,並且最后還有一些示例。

  • \\d =一位數(數字0到9)
  • \\D =一個非數字
  • \\D+ =一個或多個非數字
  • \\D+\\d =一個或多個非數字后跟一個數字
  • (\\D+)\\d =組中捕獲的一個或多個非數字,后跟一個數字

所以,如果你有一個字符串

str = 'EEEE1234'

然后你可以import re並使用re.match來匹配字符串上的正則表達式:

re.match(r'(\D+)\d', str)

這將為您提供一個匹配對象,您可以從中提取該組的內容:

re.match(r'(\D+)\d', str).group(1)

這將包含EEEE

也許有一點可能有用,就是將正則表達式視為一種工具,首先執行匹配操作。 搜索,替換和字符串拆分都是這種能力的結果。 一個例子,取決於你想要如何提取所需的部分:

r"^(\D+)\d*"

此正則表達式使用您稍后可以引用的捕獲組

出於學習目的,正如已經提到的那樣,有許多資源。 如果您對正則表達式如何工作感興趣,或者想要更好地理解它們,您可能需要閱讀一些關於常規語言的內容

如果我們專門尋找字母符號的時候,我會做類似的事情:

re.search(r'[a-zA-Z]+(?=\d+)')

只有當數字跟隨數字時才匹配,但不會返回數字本身。 這樣你也可以避免群體,這可能是混亂的。

暫無
暫無

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

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