2011-10-17 18 views
17

"_"の前にすべての文字を簡単に削除する方法はありますか?たとえば、3.04_somename.jpgsomename.jpgに変更します。正規表現の前にあるすべての文字を削除する

regexを書くためにどこを参考にすればよいでしょうか。私がチェックするほとんどの場所は、学ぶのが難しいです。

+0

どの言語ですか?あなたが見る正規表現のいくつかの品種があります。 –

+1

これは古典的なhttp://www.regular-expressions.info/tutorial.html – xanatos

+0

です。まずは難しくありません。あなたの問題がどの状況にあるかを指摘する必要があります。 –

答えて

49
^[^_]*_ 

は、最初のアンダースコアまでのすべてのテキストと一致します。それを空の文字列に置き換えます。例えば

は、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); 

http://www.regular-expressions.info

+0

どのようにjavascriptでこれを行うには? – Lukasz

+1

正規表現はまったく同じです。リンク先のサイトには、JavaScriptで正規表現を置き換える方法に関するすべての情報が含まれています。 –

+0

@Lukasz - JavaScriptでこれを行う: var result = '3.04_somename.jpg'。置き換える(/^[^ _] * _ /、 ''); – romiem

0

を見てみましょう私はこのウェブサイトからすべての私の正規表現を学びました。 Googleの 'Regex tutorials'には、たくさんの親切な記事があります。

String regex = "[a-zA-Z]*\.jpg"; 
System.out.println ("somthing.jpg".matches (regex)); 

がtrueを返します。唯一の正規表現のいくつかの実装に良いティムの1の

+0

あなたはドットをエスケープしたいでしょう:) –

+0

ハハ、そうですよ! – Hidde

2

バリアント、:^.*?_

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

正規表現:

^[^_]*_(.*)$ 

次に括弧の間の部分を取得します。 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); 
} 

...

1

交換を行う必要はありません。つまり、

echo "3.04_somename.jpg"|grep -oP "(?<=_)[^_]*\.jpg" 
somename.jpg 
0

JavaScriptで私が/.*_/を使用します:_(含む)まで

例すべてを一致

"(?<=_)[^_]*\.jpg" 

のgrepでテスト:正規表現は、uは、直接望んであなたを与えるだろう。

console.log('hello_world'.replace(/.*_/,'')) // 'world' 
関連する問題