0

次の形式からすべてのデータを取得する正規表現を作成しようとしています。

">DATA<" returns "DATA"

"> DATA <" returns " DATA "

">.4930894812948cm <" returns ".4930894812948cm "

"> 939j@$%^^ < > << <" returns " 939j@$%^^ < > << "

">DATA< blah blah blah >DATA123< BLah >DATA456<" returns "DATA", "DATA123" and "DATA456"

(例の引用符は、読みやすくするためにあります。実際の結果には表示されません。)

DATA は任意のエンコーディングにできます

>DATA<テキストファイルのどこにでも配置できるため、次々に繰り返すことができます。また、すべてのデータとは\n、 、\r.、予約文字などを含むすべてを意味します。

試してみ>(.*?)<ましたが、うまくいきませんでした。

私はJavaでこれをやっています。

別の例を追加します。

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Integer facilisis neque tellus, eget rhoncus sapien. 
Pellentesque placerat purus non eros auctor ut consectetur magna bibendum. 
Nam sollicitudin cursus >urna< nec varius. 
Pellentesque elit augue, semper non porttitor nec, adipiscing ut ligula. 
Cras accumsan >dolor< augue. 
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. >Sed< >rhoncus< ultrices elementum. 

    >lac
    us<

 Ut elementum condimentum est > pir. < feugiat.

マークする必要があります:

"urna"
"dolor"
"Sed"
"rhoncus"
"la
    cus"
" pir. "

...それらの間のスペースと行セパレーターを含みます。お役に立てれば。

4

3 に答える 3

2

必要な正規表現は次のとおりです。

>(.*)<

遅延演算子 (?) を使用したくない場合。怠惰な演算子は、ワイルドカードをできるだけ早く停止させ、正規表現を続行します (したがって、最初の < で停止します)。 <。

于 2012-06-28T02:13:21.787 に答える
0

OPが何を望んでいるのかを正確に見分けるのは少し難しいですが...

>([^<]*)<は、間にある可能性のあるすべての文字 (> とスペースを含む) を含め、> と < の間の値を返します。

そう:

"> ABC <" は " ABC " を返します

"> AB>C>D<" は "AB>C>D" を返します

"> ABC" は何も返しません

テストケースはこちら: fiddle . (「Java」リンクをクリックします。)

于 2012-06-28T02:19:47.467 に答える
0

間に入るデータがランダムでない場合は、 global + multiline をお勧めし\>([^\<])*\<ます。ただし、データランダムであるため、><.

于 2012-06-28T02:21:17.340 に答える