2017-05-08 4 views
0

Javaで正規表現を使用して特殊文字の間の文字列を取得します。 '@ function'と '@'の間のテキストを取得しますか? (Javaで)以下のためには私は入力文字列のため、「@関数」と「@」の間の文字列を取得しようとしています

Pattern p = Pattern.compile(some magic regex expression...); 
Matcher m = p.matcher(inputText); 
functionName = m.group; 
System.out.println(functionName); 

+0

それは 'だろう@のfunction'をトリミングするために追加しました'@ 'ではない文字が増えています。 PatternのJavaDocsで文字クラスについて説明しています。https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html – yshavit

答えて

3

正規表現 "広場" 印刷する:

@function(.*?)@

をこの最初に "四角" を配置すべきですキャプチャグループ。その後、Matcher.group(int)を使ってそのグループをつかむことができます。以下のコードのように:前回のマッチ操作で指定されたグループによってキャプチャ入力シーケンスを返し

functionName = m.group(1);

基(INT基)。

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#group(int)

EDIT

はゼロか、続いて '\ s' は空白

https://regex101.com/r/PH54FV/1

+0

例外が発生しました。「スレッド「メイン」の例外java .lang.IllegalStateException:一致するものが見つかりませんでした \t at java.util.regex.Matcher.group(Matcher.java:485) "わかりません。 – user2836816

+0

'if(m.find()){.... m.group(1)...}' –

+0

空白のエスケープのバックスラッシュは、エスケープする必要があります。私はいくつかの混乱を緩和するためにそれらを削除しました – quackenator

関連する問題