1

Notepad ++で正規表現を使用し、以下の2つのデータ例のパターンに一致するデータ行を見つけるために、提供したもの以外に使用できるより短いまたはより効率的な式はありますか?

上昇 0640 セット 1933 (:) 12h 52m 58s - 2m 06s 106

上昇 0640 セット 1931 (:) 12h 50m 51s - 2m 07s 106

上昇 [0-9][0-9][0-9][0-9] セット [0-9][0-9][0-9][0-9] (:) [0-9] [0-9]h [0-9][0-9]m [0-9][0-9]s - [0-9]m [0-9][0-9]s [0-9] ][0-9][0-9]

4

4 に答える 4

2

指定した元の正規表現から引き続き短縮できます。

最初の圧縮は次のとおりです。

rise \d{4}\sset\s\d{4}\s\(:\)\s\d{2}h\s\d{2}m\s\d{2}s\s-\s\dm\s\d{1,}s\s\d{1,}

これをさらに短縮できることはわかっていますが、説明のために:

\d{4} --- Matches 4 digits
\s    --- Matches space
\d{2}[h,m,s]+ --- Matches 2digits followed by h, m, s
\d{1,} --- matches one or more of the digit pattern 

Notepad++ は \d{4} をサポートしていないため

rise \d+\sset\s\d+\s\(:\)\s[\d,\s,h,m,s]+-\s\dm\s\d+s\s\d+
于 2012-06-23T05:27:51.407 に答える
2

通常の正規表現のようなものであれば、正規表現と同等の短いバージョンを次にrise \d{4} set \d{4} \(:\) \d\dh \d\dm \d\ds - \dm \d\ds \d{3} 示します。括弧をエスケープするのを忘れました。

この非常に便利な Web サイトで、さまざまな正規表現パターンをテストできます。

もちろん、それを短くすることもできますが、精度が低下する可能性が高く、大量のデータがある場合は誤検知が発生する可能性があります。簡潔にするために精度を失う簡単な例はrise \d{4} set \d{4} \(:\) [0-9hms -]+? \d{3}.

それはあなたのデータセットと、読みやすさを犠牲にするかどうか次第です。[a-z0-9 ]+? \(:\) [0-9hms -]+? \d{3} これは、許可されているもので実際にプッシュしていますが、それでも一致します。

決定はあなた次第です。

于 2012-06-23T05:27:58.703 に答える
1

私は Notepad++ を使用しませんが、適切な正規表現を使用すると仮定すると、これは機能します。

rise \d{4} set \d{4} \(:\) \d{2}h \d{2}m \d{2}s - \dm \d{2}s \d{3}

ただし、実際には「(:)」に一致させる必要はないため、これは少し簡単になります。

rise \d{4} set \d{4}.*\d{2}h \d{2}m \d{2}s - \dm \d{2}s \d{3}

または、後方参照 (\1、\2 など) のために一致した数値をキャプチャする場合は、数値を括弧で囲みます。

rise (\d{4}) set (\d{4}).*(\d{2})h (\d{2})m (\d{2})s - (\d)m (\d{2})s (\d{3})

そして、自分のデータを本当に信頼しているのであれば、「*」を使って任意の桁数を受け入れることができます:

rise (\d*) set (\d*) .* (\d*)h (\d*)m (\d*)s - (\d*)m (\d*)s (\d*)

(最後の例では、「.」の前後にスペースを戻していることに注意してください。そうしないと、「.」が「h」までの数字と一致するためです。)

于 2012-06-23T05:30:31.513 に答える
0

すべてのフィードバックに感謝します。より短い、またはより効率的なコードの記述方法を求めていたことは知っていますが、実際に試してみた結果、1 桁および 2 桁の時間単位を処理できる式が本当に必要でした。以下は私が思いついたもので、私が提供したデータで動作しますが、もう一度...ありがとう!

上昇\s[0-9]+\sset\s[0-9]+\s\(\:\)\s[0-9]+h\s[0-9]+m\s[0- 9]+s\s-\s[0-9]+m\s[0-9]+s\s[0-9]+

上昇 0640 セット 1933 (:) 12h 52m 58s - 2m 06s 106

上昇 640 セット 1931 (:) 12h 50m 1s - 2m 07s 3

上昇 0640 セット 1931 (:) 12h 50m 51s - 2m 07s 99

上昇 0640 セット 1931 (:) 12h 9m 51s - 2m 07s 106

上昇 0640 セット 931 (:) 9h 50m 51s - 2m 07s 106

于 2012-06-24T06:55:46.420 に答える