- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
22小时前关门了。
Improve this question
我试图为我的字符串找到一个合适的正则表达式模式(我很不擅长)。每次我都只能得到部分结果。我将在下面展示我创建的模式,但首先,我想指定我想从文本中提取的内容。
数据:
- 公司Fragile9完成900万欧元B轮融资
- Applle21获得1750万加元的股权融资
- Cat A轮融资1,080万美元
- Sun以10亿美元的估值筹集3500万欧元资金
- 日本1337宣布17.8亿日元融资轮
从这些数据中,我只需要提取公司收到的金额(包括$/€等,以及货币的规格,如果它在那里,如加拿大元(CAD))。
所以,结果,我期望收到这个:
- 900万欧元
- 加拿大元1750万美元
- 1 080万美元
- 3500万欧元
- 17.8亿日元
我使用的模式(向我扔烂番茄):
try:
pattern = '(\bAU|\bUSD|\bUS|\bCHF)*\s*[\$\€\£\¥\₣\₹\?]\s*\d*\.?\d*\s*(K|M)*[(B|M)illion]*'
raises = re.search(pattern, text, re.IGNORECASE) # text – a row of data mentioned above
raises = raises.group().upper().strip()
print(raises)
except:
raises = '???'
print(raises)
此外,有时在在线python regex编辑器中工作的模式在实际脚本中不起作用。
1条答案
按热度按时间1zmg4dgp1#
正则表达式中的一些问题:
\?
不是货币符号。\?
使货币符号 * optional *,但是?
应该出现在字符类之后,并且仍然有可能没有缩写而只有符号。(K|M)*
将允许KKKKKKK
。您不希望在此处使用*
。[(B|M)illion]*
将允许字母BMilon
、文字管道和文字括号以任何顺序和任何数字出现。就像它将匹配"in"、"non"和"(BooM)"一样以下是更正:
在regex101上
在Python语法中: