如果字符串包含字符,我正在寻找一个匹配的正则表达式*
,但只匹配一次。它应该匹配a*aa
, aa*aaaaa
, a*aaaa
,但不应该匹配a**a
, a****
, ****
。
有什么建议吗?
你可以试试这个模式:
^[^*]*\*[^*]*$
说明:
^ begining of the string
[^*]* all characters except * zero or more times
\* literal *
[^*]* all characters except * zero or more times
$ end of the string
它看起来好像你没有捕获任何这个字符串——那么为什么要使用正则表达式开始呢?tr//
将返回匹配数:
my $nStars = ( $str =~ tr/*/*/ );
您可以将 split 函数与/\*/
. 如果返回数组的长度为 2,则表示你只有一个 *.