0

行頭から最初の左角かっこまですべてを選択する正規表現が必要です。以下の例では、 Loremconsectetur-adipisicing、およびLabore etに一致します。

Lorem [ipsum] dolor sit amet,

consectetur-adipisicing [elit] sed do 

eiusmod tempor incididunt ut

labore et [dolore] magna aliqua.

お手伝いありがとう。

4

5 に答える 5

2

後読みと先読みの使用:

(?<=^|\n)(.*?)(?=\s?\[)

説明:

(?<=...)前の文字が一致することを確認する肯定的な後読みです。

^|\n行頭であることを意図しています。テキストの開始 ( ^) または改行 ( \n)。

.任意の文字です。

.*?0 個以上の任意の文字です。*?の代わりに*貪欲でないマッチングであるため、最後の括弧ではなく最初の括弧まで一致します。

(?=...)次の文字が一致することを確認する肯定的な先読みです。

\sは空白で、?はオプションにします (これは の前のスペース[も一致しないようにするためです)。

\[はエスケープされています(意味が異なる[ため、エスケープする必要があります)[

于 2013-04-24T09:49:24.973 に答える
1

try"[^\[]*" []は文字セットを^\[意味し、それ以外[を意味し*、何度でも繰り返します。組み合わせて、それはあなたの答えになるはずです

于 2013-04-24T09:44:19.093 に答える
0

これは役立つかもしれません..

^(.*)\[

簡単な例:

my $str ="consectetur-adipisicing [elit] sed do";
my $tmp;
if ($str =~ m/^(.*)\[/) {
    $tmp = $1;
}
print "String upto [: $tmp\n";

出力は次のとおりです。

String upto [: consectetur-adipisicing
于 2013-04-24T09:52:04.283 に答える
0

最も単純なバージョンは次のようになります。

(.*?)\[.*

于 2013-04-24T09:41:17.663 に答える