- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下代码:
preg_match('/(\d)(\d?)/', '1', $matches);
var_export($matches);
它输出:
array (
0 => '1',
1 => '1',
2 => '',
)
所以可选的[2]
条目已设置,但为空字符串。
但是,我记得过去曾见过这样的情况:最后使用时,可选捕获组未设置(数组将停止在 [1]
)。
我是在做梦吗,还是在某些情况下无法设置该条目?
我知道我可以使用 if (! isset($matches[2]) || $matches[2] == '')
如果我想确定的话,但这会不必要地使代码变得困惑。
最佳答案
这取决于您是否将整个捕获组设置为可选。
如果您将组设置为必需,但允许它匹配空字符串,那么匹配将始终被设置,但可能为空:
preg_match('/(\d)(\d?)/', '1', $matches); // $matches[2] === ''
如果通过将量词 ?
移到括号之外来使该组成为可选,则将有条件地设置匹配:
preg_match('/(\d)(\d)?/', '1', $matches); // no $matches[2]
关于php - preg_match() 设置空字符串或不设置的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744076/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!