我正在使用正则表达式从字符串中提取两个下划线之间的所有非数字字符。
JohnDoe_King234_sample
我需要从字符串中获取以下输出:King
我尝试了以下正则表达式:(?<=_).\D*(?=_)
(肯定向前看_,然后匹配非数字字符,然后肯定向前看_)
如果我的字符串是:
JohnDoe_King_sample
然后我的表达式返回King
。如果我的字符串是:
JohnDoe_King234_sample
然后我的表情不匹配。
(?<=_).\D*(?=_)
预期结果:King
实际结果:
答案 0 :(得分:2)
您可以使用
(?<=_)[^_\d]+(?=\d*_)
请参见regex demo
详细信息
(?<=_)
-_
应该在当前位置之前[^_\d]+
-除_
和数字以外的任何1个或多个字符-(?=\d*_)
-当前位置的右边必须有0个或多个数字,后跟一个_
。 注意:如果您可能在下划线之间的子字符串中的任何地方有数字,如果您可以使用某种编程语言来处理该字符串,则可以考虑使用_([^_]+)_
regex提取第一个匹配项,然后获取Group 1值,并使用带有正则表达式替换方法/功能的简单\d+
模式从其中删除所有数字。