给定的字符串使用正则表达式从字符串中过滤出唯一的元素



我有这个String,我想用空格过滤大数后面的数字,所以在这种情况下,我想过滤掉2和0.32。我使用了下面这个正则表达式,它只过滤掉十进制数,但是我想过滤小数和整数,有什么办法吗?

String s = "ABB123,ABPP,ADFG0/AA/BHJ.S,392483492389 2,BBBB,YUIO,BUYGH/AA/BHJ.S,3232489880 0.32"

regex = . aa/BHJ。年代, d + ( d + ? d +)

https://regex101.com/r/ZqHDQ8/1

问题是d+.?d+匹配至少两个数字。d+匹配一个或多个数字,然后.?匹配除换行符以外的任何可选字符,然后d+匹配(需要)至少一个数字(它匹配一个或多个)。

还要注意,所有的文字点都必须转义。

可以使用

.AA/BHJ.S,d+s+(d+(?:.d+)?)

参见regex演示。

细节:

  • .-任意字符
  • AA/BHJ.S,- aAA/BHJ.S,字符串
  • d+-一个或多个数字
  • s+-一个或多个空白
  • (d+(?:.d+)?)-组1:一个或多个数字,然后是一个点和一个或多个数字的可选序列。

您可以使用不情愿量词查找/AA/BHJ之后的任何内容,然后使用捕获组查找数字或一个或多个数字后面跟着小数分隔符和其他数字。

/AA/BHJ.*?s+(d+.d+|d+)

下面是测试正则表达式的链接:

https://regex101.com/r/l5nMrD/1

最新更新