首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中的另一个单词之前提取单词加非alpha字符

在PHP中的另一个单词之前提取单词加非alpha字符
EN

Stack Overflow用户
提问于 2017-03-26 13:54:55
回答 1查看 97关注 0票数 1

我想使用preg_match_all()提取以下三次出现的图书。

$input_lines = "Sed ut perspiciatis, **Book 22, 1-3, 3-4. 5.** unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, **Bk. 5, 8-14**, totam rem aperiam eaque ipsa, quae ab illo (see **BookName 16:1, 6-7, 10-13**) inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem"

书后面跟着一个数字,后面跟着逗号或冒号,还有许多其他数字,用逗号或用破折号分隔的数字分隔。一段时间也被用来分隔书籍的各个部分。

我试过这样做是为了接近:

代码语言:javascript
运行
复制
preg_match_all("/(\w+.*?)\w+/", $input_lines, $output_array);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 11:59:12

代码:

代码语言:javascript
运行
复制
$input_lines="Sed ut perspiciatis, Book 22, 1-3, 3-4. 5. unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, Bk. 5, 8-14, totam rem aperiam eaque ipsa, quae ab illo (see BookName 16:1, 6-7, 10-13) inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem";
$regex="/Bo?o?k\.?(?:Name)?[0-9 .:,-]*(?:\d|\.)/";
if(preg_match_all($regex,$input_lines,$output_array)){
    echo "<pre>";
        var_export($output_array[0]);
    echo "</pre>";
}else{
    echo "No Match";
}

输出:

代码语言:javascript
运行
复制
array (
  0 => 'Book 22, 1-3, 3-4. 5.',
  1 => 'Bk. 5, 8-14',
  2 => 'BookName 16:1, 6-7, 10-13',
)

Regex Demo & 代码演示

Regex分解:

代码语言:javascript
运行
复制
Bo?o?k\.?(?:Name)?     #Matches: "Book", "Bk.", and "BookName"
[0-9 .:,-]*            #Matches: digits, space, dot, colon, comma, and dash (greedily)
(?:\d|\.)              #Concludes matching on digit or dot marking the end of string
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43029624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档