"_"の前にすべての文字を簡単に削除する方法はありますか?たとえば、3.04_somename.jpg
をsomename.jpg
に変更します。正規表現の前にあるすべての文字を削除する
regexを書くためにどこを参考にすればよいでしょうか。私がチェックするほとんどの場所は、学ぶのが難しいです。
"_"の前にすべての文字を簡単に削除する方法はありますか?たとえば、3.04_somename.jpg
をsomename.jpg
に変更します。正規表現の前にあるすべての文字を削除する
regexを書くためにどこを参考にすればよいでしょうか。私がチェックするほとんどの場所は、学ぶのが難しいです。
^[^_]*_
は、最初のアンダースコアまでのすべてのテキストと一致します。それを空の文字列に置き換えます。例えば
は、C#で:http://www.zytrax.com/tech/web/regex.htm:正規表現を学習するための
resultString = Regex.Replace(subjectString,
@"^ # Match start of string
[^_]* # Match 0 or more characters except underscore
_ # Match the underscore", "", RegexOptions.IgnorePatternWhitespace);
を見てみましょう私はこのウェブサイトからすべての私の正規表現を学びました。 Googleの 'Regex tutorials'には、たくさんの親切な記事があります。
String regex = "[a-zA-Z]*\.jpg";
System.out.println ("somthing.jpg".matches (regex));
がtrueを返します。唯一の正規表現のいくつかの実装に良いティムの1の
あなたはドットをエスケープしたいでしょう:) –
ハハ、そうですよ! – 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で :Javaでは
my var = "3.04_somename.jpg";
$var =~ m/^[^_]*_(.*)$/;
my fileName = $1;
:
String var = "3.04_somename.jpg";
String fileName = "";
Pattern pattern = Pattern.compile("^[^_]*_(.*)$");
Matcher matcher = pattern.matcher(var);
if (matcher.matches()) {
fileName = matcher.group(1);
}
...
交換を行う必要はありません。つまり、
echo "3.04_somename.jpg"|grep -oP "(?<=_)[^_]*\.jpg"
somename.jpg
JavaScriptで私が/.*_/
を使用します:_(含む)まで
例すべてを一致
"(?<=_)[^_]*\.jpg"
のgrepでテスト:正規表現は、uは、直接望んであなたを与えるだろう。
console.log('hello_world'.replace(/.*_/,'')) // 'world'
どの言語ですか?あなたが見る正規表現のいくつかの品種があります。 –
これは古典的なhttp://www.regular-expressions.info/tutorial.html – xanatos
です。まずは難しくありません。あなたの問題がどの状況にあるかを指摘する必要があります。 –