字符串末尾的匹配编号

Psy*_*che 14 php regex

给定以下字符串,如何匹配结尾的整个数字?

$string = "Conacu P PPL Europe/Bucharest 680979";
Run Code Online (Sandbox Code Playgroud)

我必须告诉我,字符串的长度不是恒定的.

我选择的语言是PHP.

谢谢.

Pas*_*TIN 39

您可以使用正则表达式preg_match,如下所示:

$string = "Conacu P PPL Europe/Bucharest 680979";

$matches = array();
if (preg_match('#(\d+)$#', $string, $matches)) {
    var_dump($matches[1]);
}
Run Code Online (Sandbox Code Playgroud)

你会得到:

string '680979' (length=6)
Run Code Online (Sandbox Code Playgroud)

以下是一些信息:

  • #开头和正则表达式的结尾是分隔符-他们不意味着什么:他们只是表示开始和正则表达式的结束; 你可以使用你想要的任何角色(人们经常使用/)
  • 模式末尾的'$'表示"字符串结尾"
  • ()你想捕捉它们之间有什么办法
    • with preg_match,作为第三个参数给出的数组将包含那些捕获的数据
    • 该数组中的第一项将是整个匹配的字符串
    • 并且下一个将包含一组中匹配的每个数据 ()
  • \d装置"的编号"
  • 并且+意味着一次或多次

所以:

  • 匹配一个或多个号码
  • 在字符串的末尾

有关更多信息,您可以查看PCRE模式Pattern Syntax.

  • 在正则表达式周围使用#而不是/?有什么特别的优势吗?只是为了我自己的好奇心? (2认同)

Jan*_*nen 5

以下正则表达式应该可以解决问题:

/(\d+)$/
Run Code Online (Sandbox Code Playgroud)