Решения здесь:
None
в качестве значения по умолчанию (или nonce object
) и включите его, чтобы создать свои значения во время выполнения; или lambda
в качестве параметра по умолчанию и вызовите его в блоке try, чтобы получить значение по умолчанию (это то, что требуется для лямбда-абстракции). Второй вариант хорош, потому что пользователи функции могут проходить в вызываемом, который может уже существовать (например, type
)
Быстрая и грязная:
$found = $string -match '.*spid="(\d+)".*'
if ($found) {
$spid = $matches[1]
}
, где $string
- ваша вышеупомянутая строка. Это будет соответствовать любой строке, которая имеет spid = «somenumberhere», и сделать число в соответствующую группу, которую вы можете извлечь, используя $matches[1]
.
Сохраните это как, скажем, $string
.
Тогда do
$string -match 'spid="(\d+)"'
Если есть совпадение, то нужное значение будет находиться в $matches[1]
.*
в регулярном выражении? – manojlds 13 September 2011 в 23:14.*
будет соответствовать чему угодно до и после него на этой строке, это действительно необходимо, только если вы использовали'^.*spid="(\d+)".*$'
– Thymine 13 September 2011 в 23:17.*
, как правило, не должны использоваться в регулярных выражениях, результаты могут быть непредсказуемыми, а производительность медленнее, потому что она будет соответствовать всей строке перед обратным трассировкой, чтобы найти следующий шаблон в регулярном выражении. В этом конкретном случае для матча требуется толькоspid="(\d+)"
. – David Clarke 10 May 2015 в 23:58