4

指定した 2 つの文字列の間にある文字列をファイル内で複数回取得したい

私はこれを試しましたが、これはうまくいきません

/(?m)"String 1"!.*?"String2":/;

「文字列 1」と「文字列 2」の間にあるすべてのものが欲しい

助けてください

4

2 に答える 2

9

入力文字列が次のようになっていると仮定します

$str='String 1GIANT FISHString 2'

これはうまくいきます

($wanted)= $str =~ /String 1(.*)String 2/

$wanted今は「GIANT FISH」

dah..ファイル内の複数行...編集が近づいています

の入力を想定して、複数行でOK

String 1Line oneString 2
String 1GIANT FISHString 2
String 1String2

これはすべての文字列を取得します

(@wanted)= $str =~ /String 1(.*)String 2/g

@wanted には 3 つのエントリがあります

('Line one','GIANT FISH','')

2 番目の正規表現では、g for global は文字列内のすべての一致を検索します

于 2013-02-05T12:56:10.363 に答える
0

以下が行います:

perl -lne 'push @a,/string(.*?)string/g;END{print "@a"}'

2つの文字列は文字列文字列であり、それらの間にあるものはすべて配列要素としてストローされます.以下は、目的のためにテストした例です.とにかく、2つの文字列を必要な文字列に変更できます.

テスト済み:

> cat temp
string123stringstring234string
string456stringstring789string

> perl -lne 'push @a,/string(.*?)string/g;END{print "@a"}' temp
123 234 456 789
于 2013-02-05T13:40:34.957 に答える