我试着在收据上找到以欧元表示的金额。 我提取了值,但是货币可以以不同的方式出现:“EUR”、“E”或“€”。我没有成功地在正则表达式中指定这些不同的形式。此外,“E”不能出现同样以“E”开头的词,如“Eggs”。你知道吗
当前我的正则表达式是\d+[\.+\,+]\d*\s*[(e|eur|euros|€)]+\W
,但括号不能正常工作,因为它检索所有包含E。。。你知道吗
我的目标是:如果我们找到amount+EUR或amount+EUR或amount+E,那么就找到金额
这里有一个例子:https://regex101.com/r/F3Zm9M/2
谢谢
这里发生了几件事。 首先,你没有捕捉到我认为你想要捕捉的东西(你说的是价值观)。你应该有
(\d+(?:.|,)\d\d)
(the?:在组的内圆括号内。而且,不让它成为另一个捕获组)。 第二,您的[(e | eur | euro | eur |€]]根本没有做您希望它做的事情-看看您链接的regex101侧面板上的解释。你想要的只是e|eur|euros|€
。同样,为了对这些符号进行分组并使|
按您所希望的方式工作,您可以对它们进行分组,我假设您不想捕获这些符号,所以请使用(?:e|eur|euros|€)
。您可能需要考虑添加空格,以确保“e”或“eur”不在单词中,尽管这样您可能无法匹配“EUR3000”之类的内容。 总的来说,我不完全确定你想要匹配什么,但我希望这能帮助你开始。你知道吗我不确定我是否完全理解了这个问题,但这是否有效:https://regex101.com/r/wRJeeS/1?你知道吗
相关问题 更多 >
编程相关推荐