行頭から最初の左角かっこまですべてを選択する正規表現が必要です。以下の例では、 Lorem、consectetur-adipisicing、およびLabore etに一致します。
Lorem [ipsum] dolor sit amet,
consectetur-adipisicing [elit] sed do
eiusmod tempor incididunt ut
labore et [dolore] magna aliqua.
お手伝いありがとう。
行頭から最初の左角かっこまですべてを選択する正規表現が必要です。以下の例では、 Lorem、consectetur-adipisicing、およびLabore etに一致します。
Lorem [ipsum] dolor sit amet,
consectetur-adipisicing [elit] sed do
eiusmod tempor incididunt ut
labore et [dolore] magna aliqua.
お手伝いありがとう。
後読みと先読みの使用:
(?<=^|\n)(.*?)(?=\s?\[)
説明:
(?<=...)
前の文字が一致することを確認する肯定的な後読みです。
^|\n
行頭であることを意図しています。テキストの開始 ( ^
) または改行 ( \n
)。
.
任意の文字です。
.*?
0 個以上の任意の文字です。*?
の代わりに*
貪欲でないマッチングであるため、最後の括弧ではなく最初の括弧まで一致します。
(?=...)
次の文字が一致することを確認する肯定的な先読みです。
\s
は空白で、?
はオプションにします (これは の前のスペース[
も一致しないようにするためです)。
\[
はエスケープされています(意味が異なる[
ため、エスケープする必要があります)[
try"[^\[]*"
[]
は文字セットを^\[
意味し、それ以外[
を意味し*
、何度でも繰り返します。組み合わせて、それはあなたの答えになるはずです
これは役立つかもしれません..
^(.*)\[
簡単な例:
my $str ="consectetur-adipisicing [elit] sed do";
my $tmp;
if ($str =~ m/^(.*)\[/) {
$tmp = $1;
}
print "String upto [: $tmp\n";
出力は次のとおりです。
String upto [: consectetur-adipisicing
最も単純なバージョンは次のようになります。
(.*?)\[.*