如何从前面的标签中提取单词或句子



如何通过正则表达式或有效的替代方法提取单词/引用句子?:

tag:videos将提取视频

tag:"my videos"将提取我的视频

riding ponies tag:ponies将提取小马

riding ponies tag:"pony rider"将提取小马骑手

riding ponies tag:将不提取任何内容

支持多个标签的能力也很棒,比如:

travelling the world tag:"aussie guy" country:Australia摘录aussie guy用于标签:Australia用于国家:

目的是将其合并到搜索输入框中,以便用户可以有效地对搜索条件应用过滤器。

请让我知道我该怎么做,谢谢!

要匹配所有name:valuename:"value",您可以在preg_match_all函数调用中使用条件子模式regex:

(w+):"?K((?(?<=")[^"]*|w*))

RegEx演示

所有name将在捕获组#1中可用,value部分将在捕获组#2中可用。

RegEx分手

(w+)        # match 1 or more word characters in a group
:            # match literal colon
"?           # match a double quote optionally
K           # reset the matched data so fat
((?...))     # conditional sub-pattern available in 2nd captured group
?(?<=")      # condition is using look-behind if previous character is "
[^"]*        # TRUE: match 0 or more characters that are not "
|            # or if condition fails
w*          # FALSE: match 0 or more word characters 

PHP代码演示

只匹配tagvalue使用这个正则表达式:

btag:"?K((?(?<=")[^"]*|w*))

我想这会达到你想要的效果:

/tag:('|")?(.+?)(1|$)/m

演示:https://regex101.com/r/hN2gO2/1

PHP使用方法:

preg_match_all('/tag:('|")?(.+?)(1|$)/m', 'tag:videos
tag:"my videos"
riding ponies tag:ponies
riding ponies tag:"pony rider"
riding ponies tag:
travelling the world tag:"aussie guy" country:Australia', $match);
print_r($match[2]);
输出:

Array
(
    [0] => videos
    [1] => my videos
    [2] => ponies
    [3] => pony rider
    [4] => aussie guy
)

如果tag可以与任何单词互换,则使用w+

相关内容

  • 没有找到相关文章

最新更新