匹配最多 2 个小数位的数字的正则表达式

Prz*_*icz 3 java regex android numbers

我正在用 java/android 编写一个简单的代码。

我想创建匹配的正则表达式:

0
123
123,1
123,44
Run Code Online (Sandbox Code Playgroud)

并在逗号后的第二个数字后切片所有内容。

我的第一个想法是做这样的事情:

^\d+(?(?=\,{1}$)|\,\d{1,2})

 ^ - from begin
 \d+ match all digits
 ?=\,{1}$ and if you get comma at the end
 do nothin
 else grab two more digits after comma
Run Code Online (Sandbox Code Playgroud)

但它不匹配没有逗号的数字;我不明白正则表达式有什么问题。

Wik*_*żew 5

您可以使用

^(\d+(?:,\d{1,2})?).*
Run Code Online (Sandbox Code Playgroud)

并替换为$1. 请参阅正则表达式演示

详情

  • ^- 字符串开头 - (\d+(?:,\d{1,2})?)- 捕获第 1 组匹配:
    • \d+ - 一位或多位数字
    • (?:,\d{1,2})? - 一个可选的序列:
      • , - 逗号
      • \d{1,2} - 1 或 2 位数字
  • .* - 匹配但未捕获的行的其余部分,因此将被删除。