[英]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">
除了“空格”和“ - ”以及“/”之外沒有其他標點符號。 我只想匹配任何數字的第一個匹配項以及后面跟有“ - ”或“空格”的任何字母/單詞。
我努力了:
這錯過了空間之后的字母。 添加\\s?
對我來說不順利。
(\\d+(?:(?:\\-\\w+)|\\w)?)(.*)
這會收集字母,但我似乎無法修改它以擺脫反斜杠后的東西。
(\\d+(?:(?:\\-\\w+)|\\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)
它是如何工作的?
^
in (?im)
多行,不區分大小寫的模式將我們錨定在行的開頭。 \\D*
跳過任何非數字 (\\d+(?:[- ][az ]*[az])?)
匹配並捕獲到組1,數字可選地后跟短划線或空格以及更多空格和字母,以字母結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.