正则表达式删除字符前的所有文本

Luk*_*asz 23 regex

有没有一种简单的方法可以在"_"之前删除所有字符?例如,更改3.04_somename.jpgsomename.jpg.

任何关于在哪里学习写正则表达式的建议都会很棒.我检查的大多数地方都很难学习.

Tim*_*ker 61

^[^_]*_
Run Code Online (Sandbox Code Playgroud)

将匹配所有文本到第一个下划线.用空字符串替换它.

例如,在C#中:

resultString = Regex.Replace(subjectString, 
    @"^   # Match start of string
    [^_]* # Match 0 or more characters except underscore
    _     # Match the underscore", "", RegexOptions.IgnorePatternWhitespace);
Run Code Online (Sandbox Code Playgroud)

要学习正则表达式,请查看http://www.regular-expressions.info

  • @ChanandlerBong:您可以为此使用不同的正则表达式,而不是扩展当前的正则表达式。像`^.*_` 这样的东西是最简单的方法。 (3认同)

Fre*_*red 5

正则表达式:

^[^_]*_(.*)$
Run Code Online (Sandbox Code Playgroud)

然后得到括号之间的部分.在perl中:

my var = "3.04_somename.jpg";
$var =~ m/^[^_]*_(.*)$/;
my fileName = $1;
Run Code Online (Sandbox Code Playgroud)

在Java中:

String var = "3.04_somename.jpg";
String fileName = "";
Pattern pattern = Pattern.compile("^[^_]*_(.*)$");
Matcher matcher = pattern.matcher(var);
if (matcher.matches()) {
    fileName = matcher.group(1);
}
Run Code Online (Sandbox Code Playgroud)

...