草庐IT

带或不带尾部斜杠的 PHP RegEx

coder 2024-04-10 原文

我的目标:

要捕获 URL 的最后一部分,无论是否有尾部斜杠,尾部斜杠不是 URL 上字符串的一部分,类似于以下内容:

http://foo.com/p/dPWjiVtX-C/
                 ^^^^^^^^^^
               The string I want

我的问题:

我尝试的每一种方法都只允许尾部斜杠,而不是没有尾部斜杠的 url,或者使尾部斜杠包含在我想要的字符串中。

我尝试了什么?

1. 我试过在末尾加一个斜线:

  $regex = "/.*?foo\.com\/p\/(.*)\//";
  if ($c=preg_match_all ($regex, $url, $matches))
  {
    $id=$matches[1][0];
    print "ID: $id \n";
  }

当我没有尾部斜杠时,这会导致错误。

2. 我试过加个问号:

  $regex = "/.*?foo\.com\/p\/(.*)[\/]?/";

这会导致斜杠(如果存在)位于我的字符串中。

我的问题/tl;dr:

我如何构建一个不需要斜线的正则表达式,同时又不让斜线出现在我前面的字符串中?

最佳答案

你的 .* 默认是贪婪的,所以如果它能“吃掉”捕获组中的斜杠,它就会。

为了使其不贪心,您需要 .*? 代替捕获组中的 .*。因此,您的正则表达式将是:

$regex = "/^.*?instagram\.com\/p\/(.*?)[\/]?$/";

关于带或不带尾部斜杠的 PHP RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18365528/

有关带或不带尾部斜杠的 PHP RegEx的更多相关文章

  1. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  2. ruby -\'(反斜杠,单引号)在 Ruby 字符串中 - 2

    我正在使用Ruby1.8.7,试图生成一个带有\'字符的字符串,以便创建一个在MySQL中运行的脚本。结果应该是这样的:INSERTINTOtable(name,description)values('Joanad\'Arc','')但我不能在ruby​​字符串中只得到一个反斜杠。使用以下代码:string="INSERTINTOtable(name,description)values('Joanad\\'Arc','')"我得到了以下字符串:INSERTINTOtable(name,description)values('Joanad\\'Arc','')还有:string="IN

  3. ruby-on-rails - Rails 4.1.2 - to_param 转义斜杠(并破坏应用程序) - 2

    我在我的应用程序中使用to_param创建自定义URL(此自定义路径包含斜杠):classMachine问题是,自从Rails4.1.2行为发生变化并且Rails不允许在URL中使用斜线(当使用自定义URL时),所以它转义了斜线。我有这样的路线:Rails.application.routes.drawdoscope"(:locale)",locale:/#{I18n.available_locales.join("|")}/doresources:machines,except::destroydocollectiondoget:searchget'search/:ad_type(/

  4. ruby - 如何在 Ruby 中打印带有反斜杠的字符串 - 2

    我有一个字符串str="xyz\123"并且我想按原样打印它。IRB给我一个意想不到的结果。请在下面找到相同的内容:-1.9.2p290:003>str="xyz\123"=>"xyzS"1.9.2p290:004>关于如何让IRB打印原始字符串的任何想法,即“xyz\123”。谢谢你..更新:我试过转义它,但由于某种原因它似乎并不那么简单。请在下面找到我的试验:1.9.2p290:004>str="xyz'\'123"=>"xyz''123"1.9.2p290:005>str="xyz'\\'123"=>"xyz'\\'123"1.9.2p290:006>str="xyz'\\\'1

  5. ruby-on-rails - 在 Ruby on Rails 中打印不带引号的字符串数组 - 2

    我需要在没有字符串引号的JavaScript中打印一个字符串数组。我有一个包含字符串值的数组,它作为嵌入到页面中。对于脚本,数组应该以[[value1]、[value2]、[value3]]等形式打印,但是当我输出数组时,它会在值周围添加引号,因此脚本不起作用。如何从输出中删除引号? 最佳答案 我不确定我是否理解正确,但是当输出数组时,你可以这样做:array=["value1","value2"]array.to_s.gsub('"','') 关于ruby-on-rails-在Ruby

  6. ruby - 反斜杠 + Ruby 正则表达式中的捕获组 - 2

    如何在捕获的组之前取消反斜杠?例子:"foo+bar".gsub(/(\+)/,'\\\1')我期望(和想要)的:foo\+bar我不幸得到了什么:foo\\1bar我如何正确地逃离这里? 最佳答案 正如其他人所说,您需要将该字符串中的所有内容转义两次。因此,在您的情况下,解决方案是使用'\\\\\\1'或'\\\\\\1'。但既然你问为什么,我会试着解释那部分。原因是替换序列被解析了两次——一次由Ruby解析,一次由底层正则表达式引擎解析,其中\1是它自己的转义序列。(使用双引号字符串可能更容易理解,因为单引号引入了歧义,其中'\

  7. ruby - 如果需要,如何使用 gsub 添加尾部斜线 - 2

    如果需要,我正在尝试添加尾部斜线:a='/var/www'a.gsub...我不知道怎么做。 最佳答案 a=File.join(a,"")快捷、简单,并具有保证a以路径分隔符结尾的效果;也就是说,无论a是"/var/www"还是"/var/www/",它都会给出相同的结果。这与上面JoeWhite的评论相同;我不知道他为什么不提交它作为答案,因为它应该是一个。奇怪的是,Pathname库没有提供一种方便的方法来做同样的事情。 关于ruby-如果需要,如何使用gsub添加尾部斜线,我们在S

  8. ruby - 如何从 Ruby 中的 URL 中删除多个尾部斜杠 - 2

    我在这里想要实现的是假设我们有两个示例URL:url1="http://emy.dod.com/kaskaa/dkaiad/amaa//////////"url2="http://www.example.com/"如何提取精简的URL?url1="http://emy.dod.com/kaskaa/dkaiad/amaa"url2="http://http://www.example.com"Ruby中的URI.parse可以清除某些类型的格式错误的URL,但在这种情况下无效。如果我们使用正则表达式,那么/^(.*)\/$/会从url1中删除一个斜杠/并且对于url2。有人知道如何处理

  9. ruby - 如何使用 ActiveSupport 3 (Rails) 解析带有不带引号键的无效 JSON - 2

    我需要在Ruby中解析某些无效的JSON。类似于:json_str='{name:"Javier"}'ActiveSupport::JSON.decodejson_str如你所见,它是无效的,因为哈希键没有被引用,它应该是json_str='{"name":"Javier"}'但这无法更改,我必须解析未加引号的键。我可以用ActiveSupport2.x解析它,但ActiveSupport3不允许。它抛出我:Yajl::ParseError:lexicalerror:invalidstringinjsontext.{name:"Javier"}(righthere)------^顺便说

  10. ruby - ruby有数组方法select吗!或不? - 2

    >a=%w(abc)=>["a","b","c"]>a.select!{|e|!e.nil?}NoMethodError:undefinedmethod`select!'for["a","b","c"]:Arrayfrom(irb):2ruby1.8.7(2010-04-19patchlevel253)[i686-darwin10.5.0],MBARI0x6770,RubyEnterpriseEdition2010.02文档说有一个叫做select的方法!在数组中。http://www.ruby-doc.org/core/classes/Array.html#M000252

随机推荐