我需要检查一个文件是否包含一些与特定格式匹配的金额:
我目前有这个:
\d{1,15}(,\d{1,14})?
Run Code Online (Sandbox Code Playgroud)
但它与要求不符,因为我在这里最多可以捕到30个字符.
不幸的是,由于某些原因,这里解释的时间太长,我不能简单地选择子字符串或使用任何其他java调用.匹配必须是一个与java兼容的正则表达式.
Ama*_*osh 11
^(?=.{1,15}$)\d+(,\d+)?$
Run Code Online (Sandbox Code Playgroud)
^ 字符串的开头(?=.{1,15}$) 积极向前看以确保字符串的总长度在1到15之间\d+ 一个或多个数字(,\d+)? 可选地后跟逗号和更多数字$ 字符串的结尾(不是真的需要,因为我们已经在前瞻中检查了它).您可能必须为Java转义反斜杠: ^(?=.{1,15}$)\\d+(,\\d+)?$
更新:如果您在另一个字符串的中间查找它,请使用单词边界\b而不是字符串边界(^和$).
\b(?=[\d,]{1,15}\b)\d+(,\d+)?\b
Run Code Online (Sandbox Code Playgroud)
对于java:
"\\b(?=[\\d,]{1,15}\\b)\\d+(,\\d+)?\\b"
Run Code Online (Sandbox Code Playgroud)
更易阅读的版本:
"\\b(?=[0-9,]{1,15}\\b)[0-9]+(,[0-9]+)?\\b"
Run Code Online (Sandbox Code Playgroud)