2017-02-11 7 views
0

私は自分自身の正規表現を作成するのがかなり新しいので、おそらく疑問を覚えています。 が囲まれていないST3正規表現で他の文字に囲まれていない数字列を見つけよう

私はすべての2-4桁のシーケンスを識別するために、STの検索で正規表現を使用して機能を交換しようとしてる崇高なテキスト3の私が働いている巨大なテキストファイルを持っています他の文字で

これは以下の配列を識別します:

01 
330 
0302 

をし、次のように無視:私の文書の文脈では

1 
10405 
3042-2 
(3030 
x5590 

、他の文字に囲まれていないシーケンスは、本質的に、既存の意味それ自身の行。

つまり、2行4桁の配列がそれ自身の行に存在する場合は、それを特定する必要があります。そうでない場合、または< 2桁または5桁以上の場合は、そのまま残す必要があります。

私がこれまでに出てくることができました最高のがこれです:

\b\n[0-9]{2,4}\n\b

...十分にそれらの配列を同定するために動作しますが、実際には思えません置き換えをクリックするか、ショートカットを押してください。Ctrl + Shift + Hは、シーケンスを強調表示してから移動するように見えます。このの正規表現に問題がある場合は、他に何が使えますか?

答えて

1

、私はあなたが求めているものにすぎ明確でないんだけど、あなたはそれ自体でライン上の2-4の数字を一致させたい場合は、これはそれを

^[0-9]{2,4}$ 

を行う必要があります^試合が行の開始$マッチはあなたが先頭または末尾にスペースを許可したい場合は、あなたが使用してテキストを置き換えたいんこれは何

^[ ]*[0-9]{2,4}[ ]*$ 

を行うことができます

を終了しますか?一致するテキストと行全体を削除したい場合は、これを行うことができます

^[0-9]{2,4}$\n 

これは、改行を含む行全体に一致します。

また、あなたは$ 1(...)にあるものである括弧

^([0-9]{2,4})$ 

にマッチしたテキストをキャプチャして、交換する

このような
foo$1bar 

を行うことができます。これはあなたに与えます

foo01bar 
foo330bar 
foo0302bar 

And ignore the following: 

1 
10405 
3042-2 
(3030 
x5590 
+0

私は私の例で私が求めていたことを少し誤解しているかもしれないと思うかもしれませんが、気にしないでください。この答えは完璧です。最初の正規表現は私が求めていたものに正確に答え、 '\ n'で2番目の正規表現はさらに進んで、最初の解法と私自身が残す空白行を削除する余分なステップを省くことができます。本当にありがとう。 – Hashim

関連する問題