我想從聲明中提取淨利潤,並將「淨利潤」作爲非捕獲部分。不知道如何做到這一點(可以是非捕獲向後看?)在捕獲的正則表達式中無法捕獲python
如
'的淨利潤爲創業2350萬美元的
所需的O/P:
應用在F ollowing正則表達式:
(net|nt)\s*\.?\s*(profit|earnings)\s*\.?\s*\d+\.?\d*\.?\s*(?:lakh|crore|million)
但是,它是給
[( '淨', '利潤')]
作爲輸出。
我想從聲明中提取淨利潤,並將「淨利潤」作爲非捕獲部分。不知道如何做到這一點(可以是非捕獲向後看?)在捕獲的正則表達式中無法捕獲python
如
'的淨利潤爲創業2350萬美元的
所需的O/P:
應用在F ollowing正則表達式:
(net|nt)\s*\.?\s*(profit|earnings)\s*\.?\s*\d+\.?\d*\.?\s*(?:lakh|crore|million)
但是,它是給
[( '淨', '利潤')]
作爲輸出。
可以使用(?:)
非捕獲
s = 'business venture of net profit 23.5 million dollars'
re.findall(r'(?:net|nt)\s*\.?\s*(?:profit|earnings)\s*\.?\s*(\d+\.?\d*)\.?\s*(lakh|crore|million)',s)
[('23.5', 'million')]
你沒有捕捉到digitgroup。你也需要用「網」和「利潤」
非捕獲組所以這應該工作:
編輯捕捉million..etc
import re
s = 'business venture of net profit 23.5 million dollars'
re.findall(r'(?:net|nt)\s*\.?\s*(?:profit|earnings)\s*\.?\s*(\d+\.?\d*)\.?\s*(lakh|crore|million)', s)
# output: ['23.5', 'million']
如何在輸出中包含「百萬」? –
刪除相應的非捕獲組:'(lakh | core | million)' – Ludisposed
是的,你有捕獲的組。你看過['re'模塊文檔](https://docs.python.org/3/library/re.html#regular-expression-syntax)並找到lookbehind斷言語法('(?<=。 ..)')呢? IIRC你不能在這樣的斷言中使用可變寬度模式('*')。也許你只是想讓團隊*不捕捉*(就像你之後放的團隊)? –
您可以使用['ne?t \ s * \。?\ s *(?:利潤)\ s *(\。?\ s * \ d + \。?\ d * \??\ s *( ?:lakh | crore | million))'](https://regex101.com/r/7yw1pn/1) – anubhava
Aditya,不[此答案](http://stackoverflow.com/a/43973389/3832970 )爲你工作? –