匹配两个下划线之间的所有非数字字符

时间:2019-07-08 10:47:08

标签: regex

我正在使用正则表达式从字符串中提取两个下划线之间的所有非数字字符。

JohnDoe_King234_sample

我需要从字符串中获取以下输出:King

我尝试了以下正则表达式:(?<=_).\D*(?=_) (肯定向前看_,然后匹配非数字字符,然后肯定向前看_)

如果我的字符串是:

JohnDoe_King_sample

然后我的表达式返回King。如果我的字符串是:

JohnDoe_King234_sample

然后我的表情不匹配。

(?<=_).\D*(?=_)

预期结果:King

实际结果:

1 个答案:

答案 0 :(得分:2)

您可以使用

(?<=_)[^_\d]+(?=\d*_)

请参见regex demo

详细信息

  • (?<=_)-_应该在当前位置之前
  • [^_\d]+-除_和数字以外的任何1个或多个字符-
  • (?=\d*_)-当前位置的右边必须有0个或多个数字,后跟一个_

注意:如果您可能在下划线之间的子字符串中的任何地方有数字,如果您可以使用某种编程语言来处理该字符串,则可以考虑使用_([^_]+)_ regex提取第一个匹配项,然后获取Group 1值,并使用带有正则表达式替换方法/功能的简单\d+模式从其中删除所有数字。