2

これで髪を少し伸ばします。

文字列があるとします7f8hd::;;8843fdj fls "": ] fjisla;vofje]]} fd)fds,f,f

文字列がまたはまたはまたは7f8hd::;;8843fdj fls "":で終わるという前提に基づいて、文字列からこれを抽出したいと思いますが、これらの文字はすべて存在する可能性があります。最初の文字だけが必要です。}],)

Matcher クラスと Pattern クラスを使用して正規表現を作成しようとしましたが、うまくいきませんでした。

私が思いつくことができる最高のものは以下ですが、正規表現は私が思うように機能していないようです。

String line = "7f8hd::;;8843fdj fls "": ] fjisla;vofje]]} fd)fds,f,f";
Matcher m = Pattern.compile("(.*?)\\}|(.*?)\\]|(.*?)\\)|(.*?),").matcher(line);
while (matcher.find()) {
    System.out.println(matcher.group());
}

私は明らかに正規表現を正しく理解していません。どんな助けでも素晴らしいでしょう。

4

4 に答える 4

7
^[^\]}),]*

文字列の先頭から最初の], },)または,.

Java の場合:

Pattern regex = Pattern.compile("^[^\\]}),]*");
Matcher regexMatcher = regex.matcher(line);
if (regexMatcher.find()) {
    System.out.println(regexMatcher.group());
}

(実際にはバックスラッシュ ( [^]}),]) を削除できますが、すべての正規表現エンジンがそのイディオムを認識できるわけではないため、明確さと互換性のためにそのままにしておきます。)

説明:

^         # Match the start of the string
[^\]}),]* # Match zero or more characters except ], }, ) or ,
于 2013-05-09T14:24:23.197 に答える
3

残りの部分を次のようにカットできますreplaceAll

  String newStr = yourStr.replaceAll("[\\])},].*", "");

またはbysplit()して最初の要素を取得します。

String newStr = yourStr.split("[\\])},]")[0];
于 2013-05-09T14:29:13.547 に答える
2

これを(Java文字列として)使用できます:

"(.+?)[\\]},)].*"

ここにフィドルがあります

于 2013-05-09T14:35:09.843 に答える
1

正規表現(.*?)[}\]),](.*?)を試してみてください。私はルビュラーでテストし、あなたの例に対して働きました。

于 2013-05-09T14:29:34.093 に答える