匹配最接近的组,我实在无法说出话来

时间:2019-06-20 05:10:32

标签: java regex

我正在尝试以尽可能少的步骤来抓取一个网站,我将问题简化为这个问题是因为我遇到了将问题转化为文字的问题。

我目前正在https://regexr.com/上使用javascript进行测试,但将与Java一起使用,到目前为止我还没有遇到任何问题,但是经过几个令人沮丧的时间之后,我仍然找不到解决方案,使用正则表达式/".+?".+one/gmi和字符串a "witch" and her "broom" is one,我想一直将引号"broom"中最接近的组与单词one匹配,但我不断得到{{1} }

"witch" and her "broom" is one

预期:/".+?".+one/gmi a "witch" and her "broom" is one 实际结果:"broom" is one 我只想要引号中最接近的匹配,而不是第一个。

  

请注意,这是我正在处理的问题的简化版本,将无法真正匹配任何特定字符,只能匹配组,如果您想查看我正在使用的实际代码,那么我会很高兴包含它。

     

我实际上正在使用的代码

"witch" and her "broom" is one
  

*缩短了可读性/不必要的信息   想象一下这些对象(超过显示的2个对象),我想匹配的是

"6198609109": {
"id": 6198609109,
"word": "Choose the item below that describes the process of creating an image with the lowest file size that still renders a good quality image.\na. validation\nb. multimedia\nc. optimization\nd. bandwith",
"_wordTtsUrl": "Useless Link removed",
"definition": "c. optimization",
"_definitionTtsUrl": "Useless Link removed",
"definitionImageId": null
},
"6198630061": {
"id": 6198630061,
"word": "Select the code below that configures a background image to repeat horizontally across a web page.\na. repeat: across;\nb. background-repeat: repeat-x;\nc. background-repeat: no-repeat;\nbackground-repeat: repeat-y;",
"_wordAudioUrl": "Useless Link removed",
"definition": "b. background-repeat: repeat-x;",
"_definitionTtsUrl": "Useless Link removed",
"definitionImageId": null
},

我正在尝试匹配对象中包含单词"Select the code below that configures a background image to repeat horizontally across a web page.\na. repeat: across;\nb. background-repeat: repeat-x;\nc. background-repeat: no-repeat;\nbackground-repeat: repeat-y;", "_wordAudioUrl": "Useless Link removed", "definition": "b. background-repeat: repeat-x;" 或单词Select the code below that configures a background image to repeat horizontally across a web page.的对象,问题是任何尝试(我无法再找到或重新创建)都匹配第一个对象{{1 }},一切都取决于定义。很抱歉,如果这没有任何意义,我希望您回答简化的版本

  

我的主要问题是我无法弄清楚正在使用:"word":",但它适用于整个单词,并在以下位置停止:[^"]+

2 个答案:

答案 0 :(得分:0)

尝试使用此正则表达式,仅仅给我写信还不够:

"[^"]+"[^"]+$

Here is Demo

祝你好运!

答案 1 :(得分:0)

您可以尝试以下正则表达式:

\"[^"]+\"[^"]+one

这只是将您的正则表达式中的所有.更改为[^"]-除引号之外的任何内容。

之所以可行,是因为它断言匹配的引号对和one之间不应有另一个引号。

我做了以下假设:

  • 所有报价都是均衡的
  • one总是用引号引起来
  • 最接近的引号必须在one之前