簡體   English   中英

Python Regex-可選匹配項,不捕獲一項匹配項

[英]Python Regex - optional match, do not capture one match

我正在嘗試尋找一種優雅的方式來同時匹配負數和正數,但不能在捕獲-號時捕獲+號。

所以我有這樣的事情:

re.findall("([+-] \d+)x", "6x2 + 4x + 5 - 2x2 - 7x + 4 + 87x - 100x")

這給了我x的所有乘數,包括正數和負數(太好了!)。 例如,我希望負數為- 2 ,但不返回正數的加號( 4而不是+ 4 )。 我無法使用?:選項,也許我只是使用不正確。

您可以利用交替和正向和向前和向后移動:

(?<=\\+) \\d+(?=x)|- \\d+(?=x)

print(re.findall("(?<=\+) \d+(?=x)|- \d+(?=x)", "6x2 + 4x + 5 - 2x2 - 7x + 4 + 87x - 100x"))
# [' 4', '- 2', '- 7', ' 87', '- 100']

正則表達式演示 | Python演示

說明

  • (?<=\\+) \\d+(?=x)肯定在后面向后斷言左邊是+ ,然后匹配一個空格,后跟一個或多個數字。 使用積極的前瞻斷言右邊是x
  • | 要么
  • - \\d+(?=x)匹配- ,一個空格和一個或多個數字。 然后使用正向先行斷言右邊是x

如果您不想在比賽之前包含空格而沒有+ ,則可以將其刪除,然后將其添加到后面的正數中:

(?<=\\+ )\\d+(?=x)|- \\d+(?=x)

暫無
暫無

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

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