"@"に10回以上出現したときに正規表現が必要です。文字列にはカンマ区切りの電子メールアドレスが含まれるため、@は決して隣にはありません。Regex - 文字列中のx個以上の文字列(異なる位置)
@ {10、}は10個の@が連続している場合にのみ機能します。文字列に10個以上の@があるときに動作する必要があります。 TIA!
"@"に10回以上出現したときに正規表現が必要です。文字列にはカンマ区切りの電子メールアドレスが含まれるため、@は決して隣にはありません。Regex - 文字列中のx個以上の文字列(異なる位置)
@ {10、}は10個の@が連続している場合にのみ機能します。文字列に10個以上の@があるときに動作する必要があります。 TIA!
質問に答えるには、 "saturn"演算子を使用して正規表現内の一致数を数えることができます。
use warnings;
use strict;
my $str = '[email protected], [email protected], [email protected]@@@[email protected]@@@, @';
my $count =()= $str =~ /@/g;
if ($count > 10){
...
}
はここ仲介$count
変数せずに例を示します言っ
if ((() = $str =~ /@/g) > 10){
は、私がここに最善の方法ではないかもしれないという正規表現にコメント他者と思います。
技術的には、[電子メールアドレスのローカル部分に許可されている '@'](https://en.wikipedia.org/wiki/Email_address#Syntax)、これだけ@ 'の数をカウントします'あなたに間違った結果を与える可能性があります。私はCSVパーサであなたのリストを解析するより "正しい"方法があると思っていますが、カンマも電子メールで許可されているので、正しく引用されエスケープされたCSVがあればうまくいきます。 – ThisSuitIsBlackNot
正規表現がこれを処理する最良の方法であるということに私は同意しませんが、あなたが主張するならば、単純に '/(\ @。+){10、} /'を実行すれば1つ以上文字を '@ 'の10個(またはそれ以上)のインスタンスすべてを区切ります –