2017-03-11 13 views
0

私は正規表現に来たときにたくさんの検索を見てきましたが、私はまだそれらを設定する方法についてかなり混乱しています。私がいる問題は、私は、入力ファイルから与えられたこの与えられたテキストを変換しようとしているということです:Regexの正確な使い方に混​​乱はありますか?

それはこのようになりますどこ私は文字列の配列にそれを固執することができるように
(42, 10) d (23, 1) (123, 4) (32, 10) d (12, 9) 

[42, 10, d, 23, 1, 123, 4, 32, 10, d, 12, 9] 

ヒントを教えてください。
括弧とカンマを取り除くために最初にデリミタを使ってみましたが、デリミタはそれぞれの値を別の行に入れています。これは悲しいことですが、私が目指しているものではありません。私は基本的にこれらの特殊文字を無視しようとしているので、例えば42をint aに、10をint bに割り当てることができます。

答えて

0

あなたはどの言語を使用していますか?編集:nvm私はあなたがJavaを使用して参照してください。前提はまだそれを行う方法にはまだあります、私はJavaのバージョンで少しあなたに戻ってきます。

これは非常に簡単です。

use Data::Dumper; 

my $var = "(42, 10) d (23, 1) (123, 4) (32, 10) d (12, 9)"; 

$var =~ s/\)/,/g; 
$var =~ s/\(//g; 
$var =~ s/d/d,/g; 
$var =~ s/\s*//g; 
my @arr = split /,/, $var; 
print Dumper \@arr; 

Javaバージョン:

String content = "(42, 10) d (23, 1) (123, 4) (32, 10) d (12, 9)"; 
    String[] split = null; 

    split = content.replace(")",",").replace("(","").replace("d","d,").replace(" ","").split(","); 

    for (String a : split) 
    { 
     System.out.println(a); 
    } 

私はそれが正規表現を使用していないので、これは厳密には、あなたの質問に答えていないと思いますが。置換と分割だけを使用します。

+0

ありがとうございます。正規表現は必須ではありませんでしたが、私はそれが私が過去何時間にそれについての研究をしようとしてきたので、私が行っていたことを達成するための最も簡単な方法の1つになると言われました。 – ArcWerd

+0

ああ。そうですか。さて、あなたはまだ正規表現のパスに行きたい場合は、この正規表現が動作します:/(\ d *)| \ d/g私はそれがどのようにJavaの仕組みに適合するかはわかりませんが、 @arr =($ var =〜/ \ d + | d/g); Perl正規表現btwは正規表現のデファクトスタンダードなので、正規表現の詳細を知りたければ、perlで正規表現を使うと、操作や使用のための構文に基づいた他の言語よりもずっと簡単です正規表現の出力 – FredMan

0

正規表現が本当に必要な場合は、データの複雑さが増した方が良いでしょう。

注:dは特別なことを意味していないようでしたので、私はちょうど、英数字データの操作を行いますが、周りのそのデータを保存しておきたいならば

Pattern p = Pattern.compile("[A-Za-z0-9]+"); 
Matcher m = p.matcher("(42, 10) d (23, 1) (123, 4) (32, 10) d (12, 9)"); 

String delim = ","; 
StringBuffer sb = new StringBuffer("["); 
while (m.find()) { 
    sb.append(m.group()).append(delim); 
} 
sb.setLength(sb.length() - delim.length()); 
System.out.println(sb.append("]").toString()); 

出力

[42,10,d,23,1,123,4,32,10,d,12,9] 

使用List<String>

+0

hm ok、私はこのコードがどのように動作するかを知っています。いえいえこちらこそ!私はおそらくそれらの両方を見て、残りのプログラムと一緒に仕事をして、どちらかの仕事をすることができるかどうかを見てみましょう。ありがとうございました! – ArcWerd

関連する問題