我正在尝试以尽可能少的步骤来抓取一个网站,我将问题简化为这个问题是因为我遇到了将问题转化为文字的问题。
我目前正在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":"
,但它适用于整个单词,并在以下位置停止:[^"]+
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以尝试以下正则表达式:
\"[^"]+\"[^"]+one
这只是将您的正则表达式中的所有.
更改为[^"]
-除引号之外的任何内容。
之所以可行,是因为它断言匹配的引号对和one
之间不应有另一个引号。
我做了以下假设:
one
总是用引号引起来one
之前