gpt4 book ai didi

regex - (s)printf FORMAT 字符串的权威正则表达式

转载 作者:行者123 更新时间:2023-12-02 09:28:17 25 4
gpt4 key购买 nike

我想回答this question

要获得 Perl 的所有精美格式对哈希数据的键控访问,您需要一个(更好的版本)功能:

# sprintfx(FORMAT, HASHREF) - like sprintf(FORMAT, LIST) but accepts
# "%<key>$<tail>" instead of "%<index>$<tail>" in FORMAT to access the
# values of HASHREF according to <key>. Fancy formatting is done by
# passing '%<tail>', <corresponding value> to sprintf.
sub sprintfx {
my ($f, $rh) = @_;
$f =~ s/
(%%) # $1: '%%' for '%'
| # OR
% # start format
(\w+) # $2: a key to access the HASHREF
\$ # end key/index
( # $3: a valid FORMAT tail
# 'everything' upto the type letter
[^BDEFGOUXbcdefginosux]*
# the type letter ('p' removed; no 'next' pos for storage)
[BDEFGOUXbcdefginosux]
)
/$1 ? '%' # got '%%', replace with '%'
: sprintf( '%' . $3, $rh->{$2}) # else, apply sprintf
/xge;
return $f;
}

但我对捕获格式字符串“尾部”的冒险/暴力方法感到羞愧。

那么:是否存在您可以信任的 FORMAT 字符串的正则表达式?

最佳答案

可接受的格式在perldoc -f sprintf中有很好的规定。 。在 '%' 和格式字母之间,您可以有:

     (\d+\$)?         # format parameter index (though this is probably
# incompatible with the dictionary feature)

[ +0#-]* # flags

(\*?v)? # vector flag

\d* # minimum width

(\.\d+|\.\*)? # precision or maximum width

(ll|[lhqL])? # size

关于regex - (s)printf FORMAT 字符串的权威正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com