是否有一個簡單的方法來刪除所有字符之前刪除所有文字之前,「_」?例如,將3.04_somename.jpg
更改爲somename.jpg
。正則表達式字符
用於哪裏學來寫正則表達式將是巨大的任何建議。我檢查的大部分地方都很難學習。
是否有一個簡單的方法來刪除所有字符之前刪除所有文字之前,「_」?例如,將3.04_somename.jpg
更改爲somename.jpg
。正則表達式字符
用於哪裏學來寫正則表達式將是巨大的任何建議。我檢查的大部分地方都很難學習。
^[^_]*_
將匹配所有文本直到第一個下劃線。將其替換爲空字符串。
例如,在C#:
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
我學會了從本網站我所有的正則表達式:http://www.zytrax.com/tech/web/regex.htm。 谷歌在'正則表達式教程',你會發現很多有趣的文章。
String regex = "[a-zA-Z]*\.jpg";
System.out.println ("somthing.jpg".matches (regex));
返回true。
你會想要擺脫點:) –
哈哈,你是對的! – Hidde
添的一個變種,僅好於正則表達式的一些實現:^.*?_
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);
正則表達式:
^[^_]*_(.*)$
然後得到括號之間的部分。 在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);
}
...
沒有必要做的替代品。正則表達式會給你什麼ü直接想:
"(?<=_)[^_]*\.jpg"
使用grep測試:
echo "3.04_somename.jpg"|grep -oP "(?<=_)[^_]*\.jpg"
somename.jpg
在Javascript中我會用/.*_/
,意思是:匹配的一切,直到_(含)
例子:
console.log('hello_world'.replace(/.*_/,'')) // 'world'
在哪種語言?有幾種正則表達式你看到。 –
這是一個經典http://www.regular-expressions.info/tutorial.html – xanatos
第一,也不是很難。而且,你需要指出你的問題在哪種情況下。 –