正则表达式搜索给定单词前后的 5 个单词

标签 regex actionscript-3 search

我需要编写一个 AS3 程序来搜索某些博客的 rss 中的某个“关键字”。

我已经使用 String.indexOf() 编写了逻辑,但这非常慢,而且不可扩展。我一直在寻找一个正则表达式来查找关键字,但也返回关键字前后的 5 个单词(以显示搜索结果的上下文)。

我想可以忽略重叠匹配。

我想出了 (?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,5}keyword(?:[^a- zA-Z'-]+[a-zA-Z'-]+){0,5}

唯一的问题是:它不寻找完整的单词。因此,在

上使用该正则表达式

the quick brown fox jumps over the lazy dog, and then goes for his afternoon nap in the kennel

对于关键字“the”,会匹配

the quick brown fox jumps over
the lazy dog, and the
n goes for his afternoon nap in the kennel

注意“then”被分开了。

如何只匹配整个单词?

我尝试在关键字前后添加空格和标点符号,但这会导致关键字在搜索文本的绝对开头和结尾出现问题。

有什么办法解决这个问题吗?

取真实世界的文字为

These new wedges from SCOR offer varying degrees of loft, giving you more accuracy when you're close to the green. Photo by Ariel Zambelich/Wired For most golfers, well over half of their shots are played within 100 yards of the hole. That figure runs about 60 to 65 percent, depending on your game. While it’s sexy to crush the ball off the tee, for most of us, getting better with a putter or wedge in our hands would do much more for our scores than adding 15 yards to our drive. SCOR Golf recently released a system the company calls SCOR4161. The 4161 is for the available lofts of the clubs it makes, from 41 degrees of loft all the way up to 61 degrees, in one-degree increments. That’s a range that lets golfers replace their standard 9 iron and pitching wedge from their set of irons, as well as other wedges they might be using, with a set of clubs designed for precision from 130 yards and closer. SCOR’s claims here are that the shots we normally hit with a 9 iron and pitching wedge are much more like sand wedge shots than 5 iron shots; therefore, it makes sense to design those clubs to be more like a sand wedge. In my testing, I wasn’t as convinced of that notion. Usually, I’m hitting a 9 iron and PW more as a full shot. There’s not the same need for feel and finesse with those shots, and for me, I tended to be more consistent with the clubs from my iron set than with the SCOR clubs. But when I got to the three lofts that would be more traditionally thought of as wedges (49, 54, 59 degrees), I was very, very impressed with the SCOR clubs.Photo by Ariel Zambelich/Wired A couple of things stood out. Wedges traditionally include a certain amount of bounce on the club — the trailing edge is lower than the leading edge. This keeps the club from digging into the ground when you swing. Usually, different lies call for different bounce angles: higher bounce for sand or softer turf, lower bounce for firmer, tighter lies. The SCOR clubs include a bounce angle innovation (the company calls it V-Sole) that lets you use each of the clubs in different situations. The very leading edge of the club is ground with a very high bounce angle — sometimes 25 degrees or more — to keep the club from digging in. But the rest of the sole is ground at a much lower bounce, in the 5- to 9-degree range, which gives good performance on harder turf. The result for me was a versatile club that felt like it handled different conditions without much issue. The clubs aren’t quite as easy to open up as traditional sand wedges for big flop shots, but that was more than made up for by their consistency in different lies. Other thoughtful touches abound. The grips on the club come marked with places for your thumb spaced out every inch. The idea is that you can take a little distance off by choking down on the club, and begin to understand exactly how far you hit it based on your hand position. SCOR even provides an e-book outlining the method, and a bag tag that lets you jot down your results. It’s a great way to get better control over your distance, which is a key to good rounds. Overall, there’s not much to quibble with here. The clubheads are soft, which is good for feel, although they’ve gotten a little nicked up during my testing. The design of the clubhead is classic and confidence-inspiring, but the graphics on the shafts and the grips are a little distracting; something more understated would be nice. But by far the most important thing about SCOR is that it’s trying to build a system that helps your short game, from clubs to technique. Most golfers buy wedges by feel — they pick a motley group, trying out a few and seeing how they hit. If SCOR can get you to think about how all your clubs come together to influence your game, it will have done the whole golfing world a huge service. WIRED Beautiful build quality. Consistent feel across clubs, consistent performance across conditions. Sensible advice in owner’s manual to help improve short game. Small company leads to great customer service. TIRED Ever so slightly garish design. Clubs are $150 each, and five clubs will set you back $640.

最佳答案

我不知道 actionscript 语法,但遵循正则表达式应该适合你:

'/((?:\w+\W*){5})\b' . $keyword . '\b((?:\W*\w+){5})/'

如果您需要,我可以为您提供一个 PHP 演示。

编辑 原始正则表达式 (?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,5}keyword(?:[^a-zA-Z'-] +[a-zA-Z'-]+){0,5} 正常工作。只需要在关键字前后加上\b

关于正则表达式搜索给定单词前后的 5 个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9756644/

相关文章:

ios - 在 iPhone 中搜索某个范围内的设备 IP 地址的优化方法

actionscript-3 - Adobe Air 垂直滚动富文本

actionscript-3 - Flash CS3 + AS 3.0 静音和取消静音舞台音量

search - 当短语包含停用词时,如何在 solr 中停止结果?

java - 获取某个正则表达式中字符串的值

actionscript-3 - 如何以静默方式预加载带有声音的影片剪辑?

search - SwiftUI - 单击取消时执行操作 - .searchable 函数

regex - 如何在 wget 中使用正则表达式来拒绝文件?

python - [a-zA-Z] Python 正则表达式模式可以匹配和替换非 ASCII Unicode 字符吗?

Objective-C 正则表达式替换十六进制字节?