// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r#"(?m)("text":\s*\{\s*"ja_JP":\s*")([^"]*)""#).unwrap();
let string = "\"textList\": [
{
\"id\": 4,
\"name\": \"modeselect\",
\"folder\": true, \"children\": [
{
\"id\": 13,
\"name\": \"Motion\",
\"fontId\": 6,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Motion\" },
\"folder\": false
},
{
\"id\": 12,
\"name\": \"Story\",
\"fontId\": 7,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Story\" },
\"folder\": false
},
{
\"id\": 11,
\"name\": \"Main_Character\",
\"fontId\": 6,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Main Character\" },
\"folder\": false
},
{
\"id\": 5,
\"name\": \"Mode_select\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Mode Select\" },
\"folder\": false
},
{
\"id\": 24,
\"name\": \"Story_Mode\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Story Mode\" },
\"folder\": false
},
{
\"id\": 25,
\"name\": \"Battle_Mode\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Battle Mode\" },
\"folder\": false
},
{
\"id\": 8297,
\"name\": \"Dictionary\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Dictionary\" },
\"folder\": false
},
{
\"id\": 46,
\"name\": \"Z_desition\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Z key:OK\\nC key:Back\" },
\"folder\": false
},
{
\"id\": 47,
\"name\": \"back_to_the_title\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Back to the title?\" },
\"folder\": false
},
{
\"id\": 51,
\"name\": \"select_mode\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Select Mode\" },
\"folder\": false
},
{
\"id\": 8298,
\"name\": \"Go_to_the_Story_Mode\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Go to the Story Mode?\" },
\"folder\": false
},
{
\"id\": 8299,
\"name\": \"Go_to_the_Battle_Mode\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Go to the Battle Mode?\" },
\"folder\": false
},
{
\"id\": 8300,
\"name\": \"Go_to_the_Dictionary\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Go to the Dictionary?\" },
\"folder\": false
},
{
\"id\": 48,
\"name\": \"ok\",
\"fontId\": 8,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"OK\" },
\"folder\": false
},
{
\"id\": 49,
\"name\": \"cancel\",
\"fontId\": 8,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Cancel\" },
\"folder\": false
},
{
\"id\": 7,
\"name\": \"Story_outline\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"自由奔放で傲慢な魔族\\nであるアストリア。\\nアストリアは最近\\n地上に住まう種族の\\n殲滅に勤しんでいた。\\n次第に恐怖と畏れから\\n地上に住まう者達に名が\\n知れ渡り始めていた。\\nある日、アストリアの\\n元に面倒事が\\n持ち込まれる・・・\" },
\"folder\": false
},
{
\"id\": 6,
\"name\": \"character_name\",
\"folder\": true, \"children\": [
{
\"id\": 8,
\"name\": \"Astoria\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Astoria\" },
\"folder\": false
},
{
\"id\": 19,
\"name\": \"Test2_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Test2\" },
\"folder\": false
},
{
\"id\": 20,
\"name\": \"Test3_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Test3\" },
\"folder\": false
},
{
\"id\": 21,
\"name\": \"Test4_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Test4\" },
\"folder\": false
},
{
\"id\": 22,
\"name\": \"Test5_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Test5\" },
\"folder\": false
},
{
\"id\": 23,
\"name\": \"Test6_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Test6\" },
\"folder\": false
}
]
},
{
\"id\": 9,
\"name\": \"story_name\",
\"folder\": true, \"children\": [
{
\"id\": 10,
\"name\": \"Story1_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"1. 魔族娘の自由旅\" },
\"folder\": false
},
{
\"id\": 14,
\"name\": \"Story2_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"2. \" },
\"folder\": false
},
{
\"id\": 15,
\"name\": \"Story3_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"3. \" },
\"folder\": false
},
{
\"id\": 16,
\"name\": \"Story4_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"4. \" },
\"folder\": false
},
{
\"id\": 17,
\"name\": \"Story5_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"5. \" },
\"folder\": false
},
{
\"id\": 18,
\"name\": \"Story6_name\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"6. \" },
\"folder\": false
}
]
}
]
},
{
\"id\": 26,
\"name\": \"stageselect\",
\"folder\": true, \"children\": [
{
\"id\": 31,
\"name\": \"Stage_select\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Stage Select\" },
\"folder\": false
},
{
\"id\": 32,
\"name\": \"GameStart\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Game Start\" },
\"folder\": false
},
{
\"id\": 33,
\"name\": \"Enemy_Character\",
\"fontId\": 6,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Enemy Character\" },
\"folder\": false
},
{
\"id\": 50,
\"name\": \"back_to_the_modeselect\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"Back to the Mode Select?\" },
\"folder\": false
},
{
\"id\": 27,
\"name\": \"character_name_stage\",
\"folder\": true, \"children\": [
{
\"id\": 34,
\"name\": \"Leonor\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Leonor\" },
\"folder\": false
},
{
\"id\": 35,
\"name\": \"Riz\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Riz\" },
\"folder\": false
},
{
\"id\": 36,
\"name\": \"Mary\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Mary\" },
\"folder\": false
},
{
\"id\": 37,
\"name\": \"Koyo\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Koyo\" },
\"folder\": false
},
{
\"id\": 38,
\"name\": \"Beryl\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Beryl\" },
\"folder\": false
},
{
\"id\": 39,
\"name\": \"Amelia\",
\"fontId\": 5,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \" Amelia\" },
\"folder\": false
}
]
},
{
\"id\": 28,
\"name\": \"stage_outline\",
\"folder\": true, \"children\": [
{
\"id\": 979,
\"name\": \"stage1_outline\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"アストリアは日課である\\n種族の殲滅を終わらせて\\n城で休息を取っていた。\\nそんな時、何者かが城に\\n侵入した事を察知する。\\n急ぎ様子を見に行くと\\nそこには興味深そうに\\n城を見渡す堕天使の\\nレオノールが居た・・・\" },
\"folder\": false
},
{
\"id\": 980,
\"name\": \"stage2_outline\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"レオノールから\\n聞き出した情報を頼りに\\n妖狐を探していた。\\nその最中、魔族のリズが\\n道の真ん中で風景画を\\n描いているのを見かける\\n興味本位で声を掛け\\n描いている絵を見せて\\nもらったのだが・・・\" },
\"folder\": false
},
{
\"id\": 981,
\"name\": \"stage3_outline\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"ジメジメと湿った空気が\\n充満している薄暗い\\n森の中を進んでいると\\n奇妙な帽子を被った\\n魔女のメアリーが\\nアストリアの前に\\n立ち塞がる。\\n妖狐の差し金で\\nアストリアの邪魔を\\nしようとするが・・・\" },
\"folder\": false
},
{
\"id\": 982,
\"name\": \"stage4_outline\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"森を抜けた先に\\n古びた神社を見つけた\\nアストリア。\\n中から九つの白い尾を\\n持った妖狐の狐耀が\\n現れる。\\nアストリアと狐耀は\\n自身の主張を通すべく\\n力尽くで相手を屈服\\nさせようとする・・・\" },
\"folder\": false
},
{
\"id\": 983,
\"name\": \"stage5_outline\",
\"fontId\": 9,
\"letterSpacing\": 0,
\"lineSpacing\": 0,
\"text\": { \"ja_JP\": \"面倒事を終わらせて\\n気が晴れたアストリアに\\n竜人種のベリルが声を\\n掛けてくる。\\nアストリアが狐耀を\\n倒したことに対して\\nベリルは感謝を示す。\\nどうでも良い\\nアストリアは休むべく\\n帰ろうとするが・・・\" },
\"folder\": false";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/