例如:
http://www.domain.com/junk/target/keyword/junk
我试图说出“目标”这个词。来自上面的网址。 到目前为止,我有以下表达式:
(?=\/).*?(?=\/keyword\/)
但是这会从第一个斜杠中提取所有内容(' // www.domain.com/junk/target')
答案 0 :(得分:3)
您可以使用
target
请参阅Rubular demo(请注意,如果%r{/([^/]+)/keyword/}
可能出现在字符串的末尾,则需要在结尾添加一个替换 - keyword
)。
您需要的值在第1组内。
%r{/([^/]+)/keyword(?:/|\z)}
模式说明:
lnk[%r{/([^/]+)/keyword/}, 1]
- 斜线/
- 捕获与([^/]+)
以外的一个或多个字符匹配的第1组/
- 文字/keyword/
子字符串。答案 1 :(得分:2)
您可以将否定的字符类与正向前瞻结合使用:
timer
说明:
[^\/]+(?=\/keyword)
- 与一个或多个[^\/]+
字符相匹配的否定字符集/
- 与以下(?=\/keyword)
字符串匹配的正向前瞻。当然你也可以使用一个捕获组:
/keyword
字符串\/([^\/]+)\/keyword
将位于第一组中。