Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Regex-从字符串末尾进行搜索_Php_Regex - Fatal编程技术网

Php Regex-从字符串末尾进行搜索

Php Regex-从字符串末尾进行搜索,php,regex,Php,Regex,如何从字符串的末尾将某个对象作为目标: complexthing--50 other-\u50 更多--50 我想以(50)结尾,但这个“复合词-”可以以-,所以在这种情况下,我不能在-,从乞讨中打断-,这可能会让人困惑,所以对我来说最简单的正则表达式就是让它在结尾得到什么,然后在-,打断 在每50个数字和字符串之间总是有一个-来分隔数字和字符串,我想以数字(50)为目标。您可以使用OR运算符,,让它决定是这个还是那个。如果我理解正确,类似的方法可能会起作用: -(\d+)$ 匹配连字符(-

如何从字符串的末尾将某个对象作为目标:
complexthing--50
other-\u50
更多--50

我想以(50)结尾,但这个“复合词-”可以以-,所以在这种情况下,我不能在-,从乞讨中打断-,这可能会让人困惑,所以对我来说最简单的正则表达式就是让它在结尾得到什么,然后在-,打断


在每50个数字和字符串之间总是有一个-来分隔数字和字符串,我想以数字(50)为目标。

您可以使用OR运算符,
,让它决定是这个还是那个。

如果我理解正确,类似的方法可能会起作用:

-(\d+)$

匹配连字符(-)并在字符串($)结尾前紧跟一个或多个数字(\d+)。只捕获数字(…)。

想想你想要什么:

  • 始终位于字符串末尾的数字
  • 紧跟在
    -
    字符后面的数字
  • 跟在
    -
    字符后面的东西,它本身不是
    -
    字符
这些都是用不同的方式来表达你的问题,随着我们的讨论越来越不具体。其中任何一个都可能适合您的需要,但我将介绍每个案例,以展示它是如何做到这一点的

这些可以用多种不同的方式拼写。根据您使用的正则表达式风格,可能需要对其中一些方法进行不同的转义(例如,
X++
vs
X\++
vs
XX*
),并且并非所有风格都支持所有方法

“始终位于字符串末尾的数字”:

正则表达式模式是,也就是说:它们尽可能地匹配。因此,在第一种情况下,要求在字符串末尾至少输入一个数字(“在字符串末尾”指定为
$
),最终将得到字符串末尾的完整数字

“紧跟在
-
字符后面的数字:”

在这里,我们不指定“字符串的结尾”,而是指定它应该跟在
-
字符后面。因为
[0-9]
-
字符本身不匹配,所以我们不需要做任何其他事情来避免捕获
-

“跟在一个字符后面的东西,它本身不是一个字符”:

这个有点棘手:我们不需要指定一个数字,只需要指定一个负匹配(
[^X]
)来指定我们不需要破折号。有时,在字符类中匹配
-
字符可能会很棘手,但规则是“始终在开头指定
-
”,您应该很好。

您不是指“| |”(而不是“|”)吗?
-(\d+)$
([0-9][0-9]*)$
([0-9]+)$
(\d+)$
-([0-9][0-9]*)
-([0-9]+)
-(\d+)
-([^-][^-]*)
-([^-]+)