正则表达式在非常大的html文件中匹配java中的花括号[重复]
Posted
技术标签:
【中文标题】正则表达式在非常大的html文件中匹配java中的花括号[重复]【英文标题】:regex matching curly braces in java inside very large html file [duplicate] 【发布时间】:2018-05-28 01:05:05 【问题描述】:从下面的字符串我想匹配
之间的字符
我测试了"chkin.*"
,但在代码中它不起作用
String re = "\\\"chkin.*";
pattern = Pattern.compile(re);
matcher = pattern.matcher(document.html());
文档 = "chkin":"2018/1/18","chkout":"2018/1/19","成人":"2","儿童":"1","childAge":"2"," brandId":"2199","packageType":null,"countryId":0,"isVip":false,"swpToggleOn":null,"cacheId":null,"tla":"NGO","stayLength":null ,"daysInFuture":null,"ticketedTravelers":null,"evalMODExp":true,"partnerName":"","partnerPrice":"0.0","partnerCurrency":"","partnerTimestamp":"0", "taapPackageRateEnabled":false,"loyaltyData":"rewardsAmount":0,"formattedRewardsAmount":null,"rewardsDollarValue":null,"redemptionFloorAmount":0,"expediaPlusBranded":"Expedia+","expediaPointsBranded":"Expedia+ points","awardType":"points","hasLoyaltyEarnings":true,"hasGPSLoyaltyEarnings":false,"tier":null,"swpToggleDefaultState":true,"canUserBurn":false,"displaySwpToggle":null,"displayQualifyingNights ":false,"showExcludeTaxMessage":true,"showNoRefundIcon":false,"drrMessageForGPSEnabled":false,"omnitureData":
此文档是一个非常大的html
文件,我只展示了其中的一部分。
固定:
问题出在代码的 document.html() 部分。实际上文档是一个巨大的html
文件,我只展示了其中的一部分。所以Intellij Idea
抱怨very large String constant inside matcher
。所以我将大的html
文件分成块,然后@Bohemian 建议的正则表达式工作得很好。谢谢
【问题讨论】:
不是我的反对意见,但您应该在这里使用 JSON 解析器。 我把它读作鸡肉的缩写。 你现在的正则表达式匹配什么,你希望它匹配什么?即到底是什么问题? 另外,请记住.*
是贪婪的
另外“它不起作用不是一个有效的程序描述”。
【参考方案1】:
你的正则表达式是贪婪;它将匹配所有内容,直到它可以找到的最后一个 。
试试这个:
String re = "\\\"chkin.*?\\";
添加?
使其不情愿,尽可能匹配little。
【讨论】:
线程“主”java.util.regex.PatternSyntaxException 中的异常:索引 1 附近的非法重复 \\\"chkin.*? ^ @Avi 试试修改后的版本 线程“主”java.lang.IllegalStateException 中的异常:在 java.util.regex.Matcher.group 的 java.util.regex.Matcher.group(Matcher.java:536) 中找不到匹配项(Matcher.java:496) @Avi 我无法重现您的错误,这个正则表达式编译得很好ideone.com/xmx3r7(即使没有转义
,因为它并不特殊,除非它关闭未转义的
)。发布您的真实代码。
我认为您的正则表达式很好,可能是我的代码的document.html()
部分存在问题。以上是关于正则表达式在非常大的html文件中匹配java中的花括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章