質問
どのように私は、Perl互換の正規表現では、次の文字列内の三つの言葉を一致させることができますか?
単語1#$ワード2#$ワード3
私は、事前に実際の言葉「WORD1、WORD2とワード3」を知りません。私は#$ですセパレーターを、知っています。
そして、私はマルチバイトエンコーディングを持っているように私はワード境界を使用することはできません。これは、文字列は\ wの制御文字によって検出されていないウムラウトのような非ASCII文字を含むことができることをインスタンスするための手段ます。
解決
この正規表現を試してみてください
/(\w+)#\$(\w+)#\$(\w+)/
<時間>
あなたのより多くの情報を提供してくれた後、編集(この回答へのコメントを参照してください):
/((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)#\$((?:[^#]+|#[^$])*)/
他のヒント
#!/usr/bin/perl
use strict;
use warnings;
my $x = 'word1#$word2#$word3';
print $_, "\n" for split /#\$/, $x;
$str = explode('#$', $str);
正規表現は、このためにやり過ぎです。
それはあなたがオンラインで何をしたいかによっても異なるが、スプリット機能は便利かもしれません。
ここでの例では、しかしです。
my $line = "word1#$word2#$word3"
my @words = split('#$', $line)
これは2 #
/([^#]+)\#\$([^#]+)\#\$([^#]+)/
/([^#]*?)#\$([^#]*?)#\$([^#]*)/
所属していません StackOverflow