正则表达式:在 url 中查找斜杠和匹配关键字之间的单词
Regex: find word between slash and matching keyword in url
例如:
http://www.domain.com/junk/target/keyword/junk
我试图从上面的 url 中提取 'target' 这个词。
到目前为止,我有以下表达式:
(?=\/).*?(?=\/keyword\/)
但是这会从第一个斜杠 ('//www.domain.com/junk/target')
您可以将否定字符 class 与正前瞻结合使用:
[^\/]+(?=\/keyword)
解释:
[^\/]+
- 否定字符集匹配一个或多个 /
个字符
(?=\/keyword)
- 正向预测以匹配以下 /keyword
字符串。
当然你也可以只使用捕获组:
\/([^\/]+)\/keyword
字符串 target
将在第一组中。
您可以使用
%r{/([^/]+)/keyword/}
参见Rubular demo(注意,如果keyword
可能出现在字符串的末尾,您需要在末尾添加一个交替 - %r{/([^/]+)/keyword(?:/|\z)}
)。
您需要的值在第 1 组中。
lnk[%r{/([^/]+)/keyword/}, 1]
图案说明:
/
- 斜杠
([^/]+)
- 捕获组 1 匹配除 /
以外的一个或多个字符
/keyword/
- 文字 /keyword/
子字符串。
例如:
http://www.domain.com/junk/target/keyword/junk
我试图从上面的 url 中提取 'target' 这个词。 到目前为止,我有以下表达式:
(?=\/).*?(?=\/keyword\/)
但是这会从第一个斜杠 ('//www.domain.com/junk/target')
您可以将否定字符 class 与正前瞻结合使用:
[^\/]+(?=\/keyword)
解释:
[^\/]+
- 否定字符集匹配一个或多个/
个字符(?=\/keyword)
- 正向预测以匹配以下/keyword
字符串。
当然你也可以只使用捕获组:
\/([^\/]+)\/keyword
字符串 target
将在第一组中。
您可以使用
%r{/([^/]+)/keyword/}
参见Rubular demo(注意,如果keyword
可能出现在字符串的末尾,您需要在末尾添加一个交替 - %r{/([^/]+)/keyword(?:/|\z)}
)。
您需要的值在第 1 组中。
lnk[%r{/([^/]+)/keyword/}, 1]
图案说明:
/
- 斜杠([^/]+)
- 捕获组 1 匹配除/
以外的一个或多个字符
/keyword/
- 文字/keyword/
子字符串。