我在plsql中有一些像这样的代码
regexp_matches(source_string, pattern)
我想将源字符串与列表匹配,表示货币符号列表。我已经在我的python代码中有该列表,如果源以任何货币符号(不是多个符号)开头,我希望上面的函数返回匹配。所以“$ 345”应该匹配,而“abc345”和“$$ 230”不应该匹配。
请帮忙
使用正则表达式可以实现:^\$\d+$
分解:
^...$
- 匹配从行开始(^)到行结束($)之间的任何东西(...),你需要这个以避免匹配$$450
(行以2 $而不是1开头)
\$
- 文字美元符号(必须转义)
\d
- 从0到9的任何数字
\d+
- 从0到9的任何数字至少重复一次(例如,8,8735,但不是没有)
链接测试和游戏:https://regex101.com/r/c3YgQO/1
由于评论中添加了更多信息,因此这是一个更新:
这个正则表达式:^(-?([€$]\d+|\d+%))$
似乎是你正在寻找的。
分解:
-?
- 匹配-
一次或根本不匹配,使其成为可选项
(...|\d+%)
- 匹配...
或\d+%
\d+%
- 匹配至少一个数字后跟一个百分号(%
)
新测试链接:https://regex101.com/r/NBzaG1/1
要匹配带小数点的数字,您可以将\d+
替换为:\d+(\.\d)?\d*