簡體   English   中英

正則表達式提取字符串中的第一個數字系列和之后的所有單詞

[英]regex to extract first series of numbers in a string and all words after

試着編寫一個將在python 2.7中執行以下操作的正則表達式:

FOO 288-B BAR <MATCH: "288-B BAR">

BURT 69/ERNIE 96/KERMIT 287 <MATCH: "69">

53 ORANGE <MATCH: "53 ORANGE">

APPLE 457-W <MATCH: "457-W">

除了“空格”和“ - ”以及“/”之外沒有其他標點符號。 我只想匹配任何數字的第一個匹配項以及后面跟有“ - ”或“空格”的任何字母/單詞。

我努力了:

如果我了解您的要求,您可以使用它,然后從第1組中檢索匹配:

(?im)^\D*(\d+(?:[- ][a-z ]*[a-z])?)

這是一個演示 (請查看右下方窗格中的捕獲組)。

要檢索匹配項:

for match in re.finditer(r"(?im)^\D*(\d+(?:[- ][a-z ]*[a-z])?)", subject):
    yournumber = match.group(1)

它是如何工作的?

  1. ^ in (?im)多行,不區分大小寫的模式將我們錨定在行的開頭。
  2. \\D*跳過任何非數字
  3. (\\d+(?:[- ][az ]*[az])?)匹配並捕獲到組1,數字可選地后跟短划線或空格以及更多空格和字母,以字母結尾。

暫無
暫無

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

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