您好,我是正则表达式世界的新手。我想在我的 Java 测试字符串中提取时间戳、位置和“id_str”字段。
20110302140010915|{"user":{"is_translator":false,"show_all_inline_media":false,"following":null,"geo_enabled":true,"profile_background_image_url":"http:\/\/a3.twimg.com\/a\/1298918947\/images\/themes\/theme1\/bg.png","listed_count":0,"favourites_count":2,"verified":false,"time_zone":"Mountain Time (US & Canada)","profile_text_color":"333333","contributors_enabled":false,"statuses_count":152,"profile_sidebar_fill_color":"DDEEF6","id_str":"207356721","profile_background_tile":false,"friends_count":14,"followers_count":13,"created_at":"Mon Oct 25 04:05:43 +0000 2010","description":null,"profile_link_color":"0084B4","location":"WaKeeney, KS","profile_sidebar_border_color":"C0DEED",
我试过这个
(\d*).*?"id_str":"(\d*)",.*"location":"([^"]*)"
如果我使用惰性量词(regexbuddy 中的 3000 步),它有很多回溯.*?
,但锚点“id_str”和“位置”之间的字符数并不总是相同的。此外,如果在字符串中找不到位置,则可能是灾难性的。
如何避免 1) 不必要的回溯?
和
2)更快地找到不匹配的字符串?
谢谢。