Regex удалить весь текст перед символом
Есть ли простой способ удалить все символы перед "_"? Например, измените 3.04_somename.jpg
на somename.jpg
.
Любые предложения о том, где научиться писать регулярное выражение, тоже будут хороши. Большинство мест, которые я проверяю, трудно узнать.
Ответы
Ответ 1
^[^_]*_
будет соответствовать всем текстам до первого подчеркивания. Замените это пустой строкой.
Например, в С#:
resultString = Regex.Replace(subjectString,
@"^ # Match start of string
[^_]* # Match 0 or more characters except underscore
_ # Match the underscore", "", RegexOptions.IgnorePatternWhitespace);
Для изучения регулярных выражений взгляните на http://www.regular-expressions.info
Ответ 2
Регулярное выражение:
^[^_]*_(.*)$
Затем получите часть между скобками.
В perl:
my var = "3.04_somename.jpg";
$var =~ m/^[^_]*_(.*)$/;
my fileName = $1;
В 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);
}
...
Ответ 3
Вариант Тима один, хороший только для некоторых реализаций Regex: ^.*?_
var subjectString = "3.04_somename.jpg";
var resultString = Regex.Replace(subjectString,
@"^ # Match start of string
.*? # Lazily match any character, trying to stop when the next condition becomes true
_ # Match the underscore", "", RegexOptions.IgnorePatternWhitespace);
Ответ 4
нет необходимости делать замену. регулярное выражение даст вам то, что вам нужно прямо:
"(?<=_)[^_]*\.jpg"
проверено с помощью grep:
echo "3.04_somename.jpg"|grep -oP "(?<=_)[^_]*\.jpg"
somename.jpg
Ответ 5
Я изучил все свое Regex с этого сайта: http://www.zytrax.com/tech/web/regex.htm.
Google в "Учебниках по регулярному выражению", и вы найдете множество полезных статей.
String regex = "[a-zA-Z]*\.jpg";
System.out.println ("somthing.jpg".matches (regex));
возвращает true.
Ответ 6
В Javascript я бы использовал /.*_/
, что означает: совместить все до _ (включая)
Пример:
console.log( 'hello_world'.replace(/.*_/,'') ) // 'world'