質問

どのように私は、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 #

を持っている任意の文字列のために動作します
/([^#]+)\#\$([^#]+)\#\$([^#]+)/
/([^#]*?)#\$([^#]*?)#\$([^#]*)/
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top