3

如果字符串包含字符,我正在寻找一个匹配的正则表达式*,但只匹配一次。它应该匹配a*aa, aa*aaaaa, a*aaaa,但不应该匹配a**a, a****, ****

有什么建议吗?

4

3 回答 3

12

你可以试试这个模式:

^[^*]*\*[^*]*$

说明:

^      begining of the string
[^*]*  all characters except * zero or more times
\*     literal *
[^*]*  all characters except * zero or more times
$      end of the string
于 2013-07-25T21:45:39.183 回答
4

它看起来好像你没有捕获任何这个字符串——那么为什么要使用正则表达式开始呢?tr//将返回匹配数:

my $nStars = ( $str =~ tr/*/*/ );
于 2013-07-25T23:33:15.033 回答
0

您可以将 split 函数与/\*/. 如果返回数组的长度为 2,则表示你只有一个 *.

于 2013-07-25T21:58:29.740 回答