- - PR -
正規表現で、、、
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-08-09 00:47
正規表現についてご教授していただきたいのですが、
P(AAA1)Z(AAA2) P(BBB1)Z(BBB2) P(DDD1)Z(DDD2) 以上のような文字列に対して P()のカッコ内の文字 Z()のカッコ内の文字 をとりたいのですが 正規表現のみで できるのでしょうか。 またできるとすればどのようにすればよいのでしょうか。 | ||||
|
投稿日時: 2004-08-09 01:02
1行ずつマッチングしていくってことでよいですか?まぁぜんぶ丸飲みでも良いんですけど、一応1行ずつ読んでいくっていう前提で書きます。 P\((.*?)\)Z\((.*?)\) これでカッコ内の文字が取れます。もっと効率のよい書き方もできますがとりあえずこれがシンプルでしょう。Perl5の拡張正規表現がサポートされているエンジンなら。(Javaや.NET Frameworkの正規表現ライブラリなら大丈夫) Javaのコードに書くときは"\"をダブルにするのを忘れないでくださいね。 | ||||
|
投稿日時: 2004-08-09 09:02
佐々木さん解答有難うございます。
>1行ずつマッチングしていくってことでよいですか? よいです。 Pattern pattern = Pattern.compile("P\\((.*?)\\)Z\\((.*?)\\)"); こんな感じでいいのでしょうか? このあと正規表現にマッチした文字を取得するにはどうしたらいいんでしょう? String[] strs = pattern.split("P(AAA1)Z(AAA2)"); でいいんでしょうか?? (perl で$1 などで取得するのをJAVAではどのようにすればよいのでしょうか??) | ||||
|
投稿日時: 2004-08-09 09:33
>JAVAではどのように
java split( で検索します。思い浮かんだソースの断片で検索 似たものが出てきます。 while (matcher.find()) { http://www.hellohiro.com/regex.htm | ||||
|
投稿日時: 2004-08-09 19:02
@やAをやってみたのですが P(ここの値)Z(ここの値) がとれません。。。
どなたかご教授してくださらないでしょうか。。。 @ ------------------------------------------------------------------ Pattern pattern = Pattern.compile("P\\((.*?)\\)Z\\((.*?)\\)"); String[] strs = pattern.split("P(AAA1)Z(AAA2)"); System.out.println(strs[0]); ------------------------------------------------------------------ A ------------------------------------------------------------------ Pattern pattern = Pattern.compile("P\\((.*?)\\)Z\\((.*?)\\)"); Matcher matcher = pattern.matcher("P(AAA1)Z(AAA2)"); while (matcher.find()) { System.out.println(matcher.group()); } ------------------------------------------------------------------ | ||||
|
投稿日時: 2004-08-09 19:27
こんなんでどうでしょ。
[ メッセージ編集済み 編集者: 佐々木 編集日時 2004-08-09 19:30 ] | ||||
|
投稿日時: 2004-08-09 21:21
佐々木さんありがとうございました。
完璧でした!! ホントに助かりました。ありがとうございます。 | ||||
1
