首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找第一个单词和最后一个单词的匹配

查找第一个单词和最后一个单词的匹配
EN

Stack Overflow用户
提问于 2015-03-23 10:52:22
回答 2查看 31关注 0票数 1

我有一个像这样的网址

代码语言:javascript
运行
复制
for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html

在我的函数中,我尝试使用这个regex验证格式。

代码语言:javascript
运行
复制
if (preg_match('/(?:^|(?:\-))(\w+)/g', $pathInfo, $matches)) { 
  echo $digit = $matches[0]; 
}

$pathInfo是上面给出的网址。

基本上我想要匹配

  1. 确保目录是for-sale/stuff/
  2. used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html文件必须以使用的/new开头,以integer.html结尾
  3. 不允许有空位。

验证之后,我想得到is,在本例中是85934

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-23 10:55:33

好像你想要这样的东西,

代码语言:javascript
运行
复制
'~^for-sale/stuff/\S+/(?:used|new)\S*?(\d+)\.html$~'

演示

票数 1
EN

Stack Overflow用户

发布于 2015-03-23 11:29:03

我建议这段示例代码和以下正则表达式

代码语言:javascript
运行
复制
$re = "~\\bfor\\-sale\\/stuff\\/[^<> ]*?\\/(?:used|new)[^/ ]*?\\-(\\d+)\\.html\\b~"; 
$str = "<a href=\"for-sale/stuff/state/used-bla-bla2-bla3-bla4-(bla5)---f10-85934.html\"></a>\n<a href=\"for-sale/stuff/state/new-bla-bla2-bla3-bla4-(bla1)-f90-12344.html\"></a>"; 

preg_match_all($re, $str, $matches);

Regex:\bfor\-sale\/stuff\/[^<> ]*?\/(?:used|new)[^/ ]*?\-(\d+)\.html\b

我假设您有几个URL要在一个可变的文本字符串中进行验证,因此我使用了\b,并且URL位于某个标记中,因此我会使用[^<> ]*?来将捕获限制在标记内。

ID将位于第一个捕获组中(由\d+捕获)。空格也是不允许的:[^<> ]*?,^/ *?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29208399

复制
相关文章

相似问题

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