微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用括号将表达式分组以防万一

如何解决使用括号将表达式分组以防万一

我想在foreach ($data["{$section['id']}"] as $value) { if (!empty($value)) { code...... } } 中用()将表达式分组,就像这样:

case

这并没有取得任何成功。我也尝试过:

case a in '*(a|b)*') printf '%s\n' 'something something';; esac *(a|b)* 我都没有成功。

解决方法

这将是特定于Bash的:

您需要启用b = np.array([1,1]) B = np.tile(b,(A.shape[0],1)) array([[1,1],[1,1]]) A + B 并使用此特定语法

extglob

请参见#!/usr/bin/env bash shopt -s extglob case "$1" in *@(a|b)*) printf '%s\n' 'something something';; esac

如果使用内置的shopt启用了 man bash shell选项,则会识别出几个扩展的模式匹配运算符。在以下描述中,模式列表是由extglob分隔的一个或多个模式的列表。可以使用以下一个或多个子图案来形成复合图案:

  • |
    匹配零个或一次出现的给定模式
  • ?(pattern-list)
    匹配零个或多个给定模式的出现
  • *(pattern-list)
    匹配给定模式的一个或多个出现
  • +(pattern-list)
    匹配给定的模式之一
  • @(pattern-list)
    匹配除给定模式之一以外的任何内容

或者,您可以让!(pattern-list)在下一个模式的命令组中继续执行,方法是在命令组末尾使用特殊的case标记。

这是 NOT POSIX ,但由 ;& bash {{1} } 仍然:

ksh

现在,正如that other guy在评论中指出的那样。

POSIX方式

zsh
,

您可以转换为基本模式匹配,如下所示:

case 'a' in
*a*|*b*) printf '%s\n' 'something something';;
esac

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。