什么是正则表达式只捕获某些数据中的数字

时间:2018-02-16 06:04:45

标签: javascript regex notepad++ regedit

我有一些像这样的日志

[2/16/18 3:07:24:515 GMT] 0000026b LoggerScripta I   ******Print all instances******10075
[2/16/18 3:07:24:516 GMT] 0000026b LoggerScripta I   ******Print all instances******10078
[2/16/18 3:07:24:516 GMT] 0000026b LoggerScripta I   ******Print all instances******10080

大约300行..但我只需要每行中的那些数字(10075)并且休息时应该删除。有任何正则表达式可以帮助轻松获得那些,

我正在使用Notepad ++

任何帮助都非常有用,因为这样可以节省一天的时间

3 个答案:

答案 0 :(得分:0)

我将继续并假设这些行中的每一行都是一个字符串,每个字符串都是数组中的元素。如果这个假设成立,那么这就是代码。否则,请更新数据如何存储在JavaScript中,我将重写我的答案:



// If your logs are an array of strings...
var logs = [
  '[2/16/18 3:07:24:515 GMT] 0000026b LoggerScripta I ******Print all instances******10075',
  '[2/16/18 3:07:24:516 GMT] 0000026b LoggerScripta I ******Print all instances******10078',
  '[2/16/18 3:07:24:516 GMT] 0000026b LoggerScripta I ******Print all instances******10080'
];

var numbersFromArray = logs.map((val) => {
  return val.split('***')
    .reverse()[0];
});

console.log(numbersFromArray);

// If your logs are a single string...
var logs = '[2/16/18 3:07:24:515 GMT] 0000026b LoggerScripta I ******Print all instances******10075 [2/16/18 3:07:24:516 GMT] 0000026b LoggerScripta I ******Print all instances******10078 [2/16/18 3:07:24:516 GMT] 0000026b LoggerScripta I ******Print all instances******10080';

var numbersFromString = logs.split('[')
  .map((val) => {
    return val.split('***')
      .reverse()[0]
      .trim();
  })
  .filter((val) => val !== '');

console.log(numbersFromString)




答案 1 :(得分:0)

如果您正在使用notepad ++并且想删除换行符之前的最后一位数字,那么使用正则表达式启用查找/替换就足够了

查找:(.*\*)(\d+(\r\n)?)

替换(正则表达式):\2

它的作用:

第一个捕获组查找以星号结尾的任何内容(贪婪)。

第二个捕获组会查找一组数字加上换行符(如果它在那里)(可能不是最后一个日志语句)。

替换将只为每行提供第二个捕获组。

答案 2 :(得分:0)

使用Notepad ++:

  • 控制 + ħ
  • 找到:^.+?(\d+)$
  • 替换为:$1
  • 检查环绕
  • 检查正则表达式
  • 请勿检查. matches newline
  • 全部替换

<强>解释

^       : beginning of line
.+?     : 1 or more any character but newline, not greedy
(       : start group 1
  \d+   : 1 or more digits
)       : end group
$       : end of line

<强>替换

$1      : content of group 1

给定示例的结果:

10075
10078
10080