regex 用于捕获特定数字模式和仅捕获数字模式的正则表达式

clj7thdc  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(78)

我有一个正则表达式,它可以从文本中正确捕获所有浮点数和整数。它还避免字母数字文本。
Regex:/[+-]?[^a-zA-Z\n][^\s]/
但它在下面的一个测试用例中失败。
要求:
1.)捕获所有有效的整数和小数(包括带有正号+和负号-的整数)。1,1.0,-1.0,-1,.6,0.7,0,+.6,+.01均有效。7、不合法。.6未在下面的文本中使用上述正则表达式捕获
2.)避免像3E,171 A等文本........这个正则表达式除了这种情况外什么都做。它捕获文本11 A,17 E(但不是9 E,8B),下面的摘录中的文本10 E在这个正则表达式中被捕获,但不是9 W。这里也不需要10 E。必须避免任何格式为“NUMBERALPHABETs”的字符串
3.)不应捕获空白。不想在代码中不断地修剪[dataset可能很大,可以在java中使用string.trim(),但要避免它]
有什么建议吗?
下面的示例文本

la=    -0.8    -0.7    -1.3    -1.6    -0.2    -0.9    -0.6    -0.7    -0.4     0.0 
  9W t=  32.611  32.599  32.588  32.577  32.565  32.531  32.519  32.508  32.496  32.485
      a=    13.6    17.2    13.9    14.8    12.7    17.8    13.7    14.3    16.9    15.9 
      p=    16.2    17.9    17.7    16.5    14.8    20.3    16.7    17.1    21.1    17.8 
     la=     0.7     1.     0.7     0.8     0.6     0.9     1.0     2.0     1.8     0.9 
      t=  32.309  32.298  32.287  32.276  32.265  32.177  32.166  32.155  32.144  32.133
      a=    12.1    13.4    17.5    17.0     0.0    14.5    14.7    14.7    16.7    14.5 
      p=    15.2    14.6    18.4    18.5     0.0    15.1    15.9    17.1    17.5    17.0 
     la=     0.9     .6     1.3     0.5     0.0     0.3     0.9     0.9     0.9     0.6 

 10E t=  32.658  32.646  32.635  32.623  32.612  32.577  32.566  32.555  32.543  32.532
      a=    13.8    17.3    16.0    15.2    13.8    16.4    15.3    20.3    17.6    16.5 
      p=    15.2    18.0    17.4    17.1    15.6    17.7    18.0    23.2    19.1    18.8

字符串
正则表达式:/([^\s][\d])+(.\d+)?[^a-zA-Z][^\s]/执行所有操作,但在1、0.9等处失败.....未捕获第一个数字和最后一个数字。
任何帮助都是感激的。

v64noz0r

v64noz0r1#

您可以使用以下命令:第一个月
说明:

  • (?<!\S)检查匹配的模式前面除了空白字符之外没有其他字符。相当于(<=\s|^)
  • [+-]?可选标志,
  • (?:\d+|\d*\.\d+)整数,或可选整数部分的浮点数,
  • (?!\S)(相当于(?=\s|$))与上一点匹配的数字后面应跟随空格符号(空格、制表符或换行符)。请注意,此符号已选中,但未包含在实际匹配中。

演示here

bwntbbo3

bwntbbo32#

我得出以下结论:

(?<=(\s|^))[+-]?(\d+|\d*\.\d+)(?=(\s|$))

字符串
(?<=(\s|^))(?=(\s|$))是自定义的单词边界,这确保我们避免smth,如1.2e5或word123,其中1.2和123将是我们的匹配

相关问题