正则表达式在非常大的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中的花括号[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 Java 端点注释

正则表达式匹配 .htaccess 中的一系列文件类型

Python: 正则表达式匹配多行,实现多行匹配模式

Python中的正则表达式

Python: 正则表达式

在 Java 正则表达式中匹配 y 个组中的 x 个