javascript正则表达式从特定字符串的第n行查找字符串

时间:2019-07-16 07:21:45

标签: javascript regex

我想使用javascript正则表达式从特定行中查找特定字符串。帮我找出来。

Salary period 2019-6-M
Deductions
Along fin Robert(Netherlands)
s.v
Mr. E.P.  Benjamin
San Marco 25
German 

从上面的字符串中,我需要找到 Benjamin 扣除额字符串是常量,所以我尝试了     (?<=推导)\ n *?(\ w + \ s *)从哪里开始找到行和^ [^ \ n] + \ n(。+)+ \ n(。+)+ \ n(。+ )以找到本杰明。但不知道将两者合并并得到它。

答谢。谢谢

3 个答案:

答案 0 :(得分:1)

您可以匹配Deductions,然后重复两次与整个字符串匹配的方式,而不是使用正向查找。

在第三个字符串中,匹配到最后,并捕获匹配非空格字符1+倍的组中的最后一个“单词”。

\bDeductions(?:\n.*){2}\n.* (\S+)$
  • \bDeductions字边界,匹配推论
  • (?:\n.*){2}重复2次换行符和0+个字符(除换行符外),直到字符串结尾
  • \n.* (\S+)匹配换行符,除换行符外,0 +个字符。然后匹配一个空格,并捕获组1中非空格字符的1+倍。
  • $字符串结尾

Regex demo

const regex = /\bDeductions(?:\n.*){2}\n.* (\S+)$/m;
const str = `Salary period 2019-6-M
Deductions
Along fin Robert(Netherlands)
s.v
Mr. E.P.  Benjamin
San Marco 25
German `;
console.log(str.match(regex)[1]);

答案 1 :(得分:0)

您可以根据您的起始字符串和行数创建动态正则表达式,如下所示:

Case: 1
The max number is 5
The min number is 1
Case: 2
The max number is 6
The min number is 4

答案 2 :(得分:0)

我找到了:

(?<=Deductions)(?:.*\n){3}?.* (\w+)\n

有帮助吗?