【问题标题】:How I can check if a string contais "x" but not "xy" [duplicate]如何检查字符串是否包含“x”但不包含“xy”[重复]
【发布时间】:2019-04-22 15:24:10
【问题描述】:

如何检查字符串是否包含“x”但不包含“xy”?

所以我有这样的字符串:

"5103564-XY",
"77-546-00X",
"292196232",
"5102200X",
"5102205",
"5102251-EP".
...

我只需要末尾带有字母“x”的数字。有人可以帮我在 PHP 中实现这一点吗?

所以如果我试试这个:

$strings = array("5103564-AD", "77-546-00D", "292196232", "5102200D", "5102205", "5102251-EP");
print_r(preg_grep('/d$/i', $strings));

所以输出是这样的:

Array
(
    [0] => 5103564-AD
    [1] => 77-546-00D
    [3] => 5102200D
)

但这不是我们想要的结果。我只需要仅包含字母“D”的字符串,而不需要包含“AD”或其他内容的字符串。我希望现在更清楚一点,我需要/我的。

【问题讨论】:

标签: php string contains


【解决方案1】:

使用preg_grep 仅查找列表中仅以dD 结尾的值(没有前面的字母):

$strings = array("5103564-AD", "77-546-00D", "292196232", "5102200D", "5102205", "5102251-EP");
print_r(preg_grep('/[^a-z]d$/i', $strings));

输出:

Array ( 
    [1] => 77-546-00D
    [3] => 5102200D
)

Demo on 3v4l.org

【讨论】:

  • 好的,没错,但是如果我将“x”换成“d”,因为示例中的“x”实际上是“d”(在字符串中相同,对于一个例子“77-546-00X”实际上是“77-546-00D”)如果我在我的代码中替换它,所以答案不正确,你能帮帮我吗?在这里你能看到我最不喜欢的东西:3v4l.org/m1Fin
  • 哪方面的答案不对?它列出了所有以d... 结尾的值
  • 是的,没错,但我只需要字符串,它只包含“D”而不是“DA”、“XD”、“YD”或其他东西,只有字母“D”最后,这非常重要。 ;-)
  • @Laberkopf 我已经修改了我的答案和演示。我认为这应该做你想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 2019-02-06
  • 2020-09-20
  • 1970-01-01
  • 2022-01-17
  • 2018-08-25
相关资源
最近更新 更多