2016-07-17 10 views
-1

私は、Java正規表現を開発するためにオンライン正規表現テスターと協力してきました。Java正規表現:何かの文字列を表現するには?

強く開始する特定のパターン、文字列の最後に特定のパターン、その文字列の間に何かを一致させる正規表現です。それは、ファイル名です。例えば

は文字通り何もすることができ、この

^StartOfAFileName_middleOfAFileName_EndOfAFileName.java$ 

"_middleOfAFileName_"のような構造。

私は正規表現テスターでこれに似たこの何かをしようとしたが、それは失敗しました:

^StartOfAFileName_**\***_EndOfAFileName.java$ 

任意のパターンがどうなるか"*"のJavaの正規表現と同等または任意の文字列/任意のアイデアを?

+0

はStartOfAFileName__EndOfAFileName.java'が有効(すなわち検討する 'です(空の内容が大丈夫なら、下線のいずれかを省略するといいですか?) – wakjah

答えて

5

.*です。 .「は、任意の文字であり、*は、それらの任意の数である

https://docs.oracle.com/javase/tutorial/essential/regex/pre_char_classes.html

+0

私はそれを試しました。私は正規表現のテスターで私が使用しています。ピリオドはリテラルとして扱われます。.java $のパターンは ".java"と一致し、ピリオドはiではありません任意の文字として解釈されます。私は試しました。*正規表現では機能しませんでした – Steve

+0

@Steve正規表現のテスターが言っていることに関係なく、正規表現のJavaのPatternクラスでは、 '.'が任意の文字として解釈されます。これは[spec](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html)の一部です。 – hexafraction

+0

@Steve私たちが間違いを指摘するのに役立つコードを表示してください。 – SomeDude

0

ここでは、コード/コンテキストにある:。

String str = "StartOfAFileName_middleOfAFileName_EndOfAFileName.java"; 
String pattern = "^StartOfAFileName.*EndOfAFileName.java$"; 
System.out.println(str.matches(pattern) ? "\nMATCHES" : "\nDOESN'T MATCH");