
javaの正規表現で、下記のようなテキストファイルから配列を作成しようと思っています。
----------------
.title1
hoge
fuga
..title2
hoge2
fuga2
----------------
↓
Array[0] = ".title1
hoge
fuga"
Array[1] = "..title2
hoge2
fuga2"
このようなテキストファイルで、上に示したように行頭が[ . ]の行から、次の行頭が[ . ]の行の直前の行までを配列の一つの要素としたいのですが、どのようにすればいいでしょうか
^\.[\w|\W]+
この表現では、「.title1」からテキストの最後までが一致してしまいます。かといって、
^\.[\w|\W]+^\.
としてしまうと、こんどは「.title2」から始まる部分の取得ができなくなってしまいます。
なにかいい方法はありませんでしょうか。正規表現以外でも構いません。よろしくお願い致します
No.3ベストアンサー
- 回答日時:
あれ、もしかして「..title2」って誤記でしょうか
「.title2」が正しいのであれば、こうですね
http://ideone.com/ty6sh
http://ideone.com/c1kZS
※さっき自分が書いたのにも誤記がありました。
「'..'から始まる行の処理後」→「'..'から始まる行の処理前」
回答ありがとうございました。
「..title2」は正しい表記です。
行頭ドットの数は1-6個の場合があり、そのすべてに一致する必要がありました。
最終的に正規表現で取得する方法を発見しまして、以下のような感じで取得できました。
^\..*?(?=(^\.|\Z))
これを利用してwhileループで配列作ろうと思ってたのですが、行頭1-6個のドットに一致する正規表現つくってsplit使ったほうが処理楽そうですね……
直接的な解ではありませんでしたが、正規表現一致後の処理について参考になりました。ありがとうございました!
No.2
- 回答日時:
少し勉強したっきりとまっているため、自分にはJava自体のコードで示す事が出来ませんでした。
テキスト処理手法の方へコメントを残しますので、Javaへ応用出来そうであれば使ってみてください。
記載された例を拝見する限り、'.'から始まるという事を気にしなくて良いと思います。
'..'だけ意識すればそれほど難しい話ではなく、例えば次のように解けそうです。
<1>
1, 一度に全て、文字列として読み込む
2, 行頭に「..」がくる箇所で文字列を分割(正規表現利用)
Ruby: http://ideone.com/vCISB
<2>
※mutableな文字列の場合なので、Javaだとちょっと変わりそうです。
1, 一行ずつ読み込み、文字列へ加えていく
2, '..'から始まる行の処理後、対象文字列を差し替える(startsWithを使えば、正規表現不要)
Ruby: http://ideone.com/oIcOz
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP php ログイン 1 2022/11/01 00:24
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでのデバッグコード削除
-
tryの終了
-
JavaScriptからJAVAクラスを呼...
-
アコーディオンメニューをアン...
-
WPF C#でF10のイベント取得方法...
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
Javaプログラムからポップアッ...
-
ExcelVBA で文字列の特定の文字...
-
コンパイラとインタプリタとア...
-
[Java] while(true)の意味
-
java正規表現で複数行を取得し...
-
素数判定を再帰処理で
-
処理時間測定について質問があ...
-
wait()したスレッドが起こされ...
-
「UIスレッド」「マルチスレッ...
-
ラジオボタンの選択判定
-
データファイルの読み込みについて
-
JAVA ID重複処理
-
tomcat(struts)で起動時に処理...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
Tomcat高負荷時の設定について
-
Javaプログラムからポップアッ...
-
Javaでのデバッグコード削除
-
アコーディオンメニューをアン...
-
C#で別スレッドの終了を知りたい
-
onBlurとonFocusの処理順序につ...
-
Javaアプリケーション実行の返...
-
JavaScriptからJAVAクラスを呼...
-
表示待ち時間に「処理中...」の...
-
ExcelVBA で文字列の特定の文字...
-
C#の処理をリアルタイムに表示...
-
ラジオボタンの選択判定
-
Javaの再帰でメソッド呼び出す...
-
数値の定数を付ける時
-
[Java] while(true)の意味
-
Javaプログラムから外部コマン...
-
WaitForSingleObjectの復帰時間
-
Tomcatのスレッドを破棄する方法
-
重い処理中のアニメーションgif...
おすすめ情報