0

正規表現について助けが必要です。次のテキストがあります。

Revision: 42064
Author: dbratilov
Date: 19 июля 2013 г. 13:29:43
Message:
[BUG] By VTBSOARVIIIS-2144
TA55.1 obly for KM partyUId  

----
Modified : /Analitics/Документы/ЧТЗ/BR-5454

[BUG]タグとシンボルの間に現れるものをすべてキャッチする必要があります----

[BUG] By VTBSOARVIIIS-2144
TA55.1 obly for KM partyUId  

私はこの正規表現を書きました:

^(\W+)(BUG+)(.*+)

結果は次のとおりです。

[BUG] By VTBSOARVIIIS-2144

2列目が撮れない。誰でも私を助けることができますか?

4

3 に答える 3

3

正規表現の複数行修飾子を使用:

s = 'Revision: 42064
Author: dbratilov
Date: 19 июля 2013 г. 13:29:43
Message:
[BUG] By VTBSOARVIIIS-2144
TA55.1 obly for KM partyUId  

----
Modified : /Analitics/Документы/ЧТЗ/BR-5454'

# Note the m at the and of the regex
puts s.scan /^\W+BUG+.*?^----$/m #=>
[BUG] By VTBSOARVIIIS-2144
TA55.1 obly for KM partyUId

于 2013-07-22T14:45:39.707 に答える
1

次のパターンを使用できます。

\[BUG\](?>[^\n]++|\n(?!\n-{4}))+

アイデアは\n\n----、ターゲット文字列の終了制限として使用することです。そのためには、コンテンツを次のように記述する必要があります。

(?>     # open a group (atomic here, since recording backtrack positions is not needed)
[^\n]++ # all that is not a newline, one or more time (possessive for the same reason)
|       # OR
\n(?!\n-{4}) # or a newline not followed by "\n----"
)+      # repeat the group one or more times

興味深いのは、バックトラックがほとんどないパフォーマンスの高いパターンを取得し、ドットオールの問題を回避することです。

于 2013-07-22T15:03:46.790 に答える