正则表达式在文本匹配后查找数字组

时间:2018-06-23 13:59:31

标签: javascript python regex

我尝试了许多正则表达式,但是无法获得所需的输出。 我的字符串是

# Whether to start the thrift rpc server.
start_rpc: true

我需要提取紧随先生或太太之后的数字组,即3611

2 个答案:

答案 0 :(得分:1)

尝试使用正则表达式:(?:Ms|Mr|Mrs).*?(\d+)并获取组1的值

Demo

答案 1 :(得分:1)

另一种在女士之后(或女士)捕获数字的方法可能是:

\bM(?:rs?|s|iss)\.[^\d]+(\d+)

那会匹配

  • 一个单词边界\b,以确保它不是较大匹配项的一部分,然后是M
  • 一个替代(?:rs?|s|iss)\.,它将与变体之一匹配,后跟一个点。
  • 使用否定的character class [^\d]+
  • 不匹配数字
  • 最后捕获捕获组(\d+)中的一个或多个数字

const regex = /\bM(?:rs?|s|iss)\.[^\d]+(\d+)/g;
const str = "Ms.Evalyn 33 J Hobbs AND Mr.Jan K Hir 55 years Mr. sch AND Ms.Gale D Bannister 3611";
while ((m = regex.exec(str)) !== null) {
  if (m.index === regex.lastIndex) {
    regex.lastIndex++;
  }
  console.log(m[1]);
}